此代码无效,有人可以帮我吗?
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!”。 如果有人可以帮助我解决这个问题。
答案 0 :(得分:1)
如果使用Console.Read()
,则必须在一行中输入所有字符,然后按Enter键以获得结果:
Console.Read()
读取单个字符。
对于您的情况,当您输入“ 5”时,将提供字符“ 5”,其ASCII值为53,然后再输入“ 5”。这些的总和是106!
因此,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());