调试C#错误的非常基本的计算器

时间:2019-03-03 21:48:19

标签: c# debugging

此代码无效,有人可以帮我吗?

public static void Main(string[] args)
{
   var p = '+';
   var m = '-';
   int a = Console.Read();
   var s = Console.Read();
   int b = Console.Read();
   if (s == p)
   {
      int sum = a + b;
      Console.WriteLine(sum);
   }
   else if (s == m)
   {
      if (a < b)
      {
         Console.WriteLine("!ERROR!");
      }
      else
      {
         int sum = a - b;
         Console.WriteLine(sum);
      }
   }
   else
   {
      Console.WriteLine("!ERROR!");
   }
}

例如,当我输入5 + 5时,它会自动添加另一个 5 + 这样它将输出“!ERROR!”。 如果有人可以帮助我解决这个问题。

1 个答案:

答案 0 :(得分:1)

如果使用Console.Read(),则必须在一行中输入所有字符,然后按Enter键以获得结果: enter image description here

Console.Read()读取单个字符。 对于您的情况,当您输入“ 5”时,将提供字符“ 5”,其ASCII值为53,然后再输入“ 5”。这些的总和是106!

enter image description here

因此,Console.Read()返回您键入的Unicode代码点的索引。 您可以创建其他方法将其转换为数字,例如:

public static int CharToInt(int c)
{
    if (c < '0' || c > '9')
    {
        throw new ArgumentException("The character should be a number");
    }

    return c - '0';
}

并像这样使用它:

 int a = CharToInt(Console.Read());
 var s = Console.Read();
 int b = CharToInt(Console.Read());