繁体   English   中英

有人可以向我解释我的代码有什么问题吗?

[英]Can someone explain to me what's wrong with my code please?

我一直在学习 C#,现在我正在尝试创建一个计算器来读取您的输入以学习如何正确读取输入。 如果它真的很简单,我很抱歉我是新手。 该错误表明它无法将 int 转换为 (10,20) 和 (14,20) 上的字符串。

using System;

class Calculator {
static void Main() {
    int n1, n2;
    string operation;


    Console.Write("First number: ");
        n1 = int.Parse(Console.Read());
    Console.Write("Operation: ");
        operation = Console.ReadLine();
    Console.Write("Second number: ");
        n2 = int.Parse(Console.Read());

        if (operation == "+") {
            Console.Write(n1 + n2);
        }else if (operation == "-") {
            Console.Write(n1 - n2);
        }else if (operation == "*") {
            Console.Write(n1 * n2);
        }else if (operation == "/") {
            Console.Write(n1 / n2);
        };

    }
} ```

拨打所有电话Console.ReadLine()而不是Console.Read()

确保为操作数键入 integer。 如果您没有输入 integer(我无法确定您的10,20是否意味着您的操作数是十和二十,或者您来自使用逗号作为小数分隔符的国家/地区,而 10,20 是十和- a-fifth) 那么您将无法使用 int.Parse 成功解析十进制数,请尝试使用 decimal.Parse 并更改所有数据类型

使用 Console.Read() 将读取单个字符并返回其数值,因此例如 1 字符的 int 值为 31(查看 ascii 表),这将非常令人困惑,甚至更令人困惑的是 A ( ascii 值 65) 可以添加到 B (66 - 结果 131):)...

用点试试。 10.20 和 14.20。 也试试 ReadLine

试试这个作为 10 的初学者。我敢肯定,有一些方法可以更有效地做到这一点,但这应该会给你一些想法:

using System;

namespace Calculator
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("First Number: ");
            int a = int.Parse(Console.ReadLine());

            Console.Write("Operation: ");
            string operation = Console.ReadLine();

            Console.Write("Second number: ");
            int b = int.Parse(Console.ReadLine());

            switch(operation)
            {
                case "+":
                    Console.WriteLine(string.Format("Result: {0}", (a + b)));
                    break;

                case "-":
                    Console.WriteLine(string.Format("Result: {0}", (a - b)));
                    break;

                case "*":
                    Console.WriteLine(string.Format("Result: {0}", (a * b)));
                    break;

                case "/":
                    Console.WriteLine(string.Format("Result: {0}", (a / b)));
                    break;
            }
            Console.WriteLine("Press any key to close...");
            Console.ReadKey();
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM