下面的代码有问题吗?
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int num1 = 0, num2 = 0, rslt = 0;
char oprtr;
Console.Write("Enter calculation: ");
num1 = Convert.ToInt32(Console.Read());
oprtr = Console.ReadKey().KeyChar;
num2 = Convert.ToInt32(Console.Read());
switch (oprtr)
{
case '+':
rslt = num1 + num2;
break;
case '-':
rslt = num1 - num2;
break;
case '*':
rslt = num1 * num2;
break;
case '/':
rslt = num1 / num2;
break;
default:
break;
}
Console.Write("rslt: {0}", rslt);
Console.WriteLine();
Console.ReadKey();
return;
}
}
}
编译并运行后,结果为0
我的代码看起来没什么问题。
我不知道我的代码有什么问题
答案 0 :(得分:1)
您需要使用Console.ReadLine()
代替Console.Read()
。 Console.Read()
读取按下的键代码而不是值。
替换以下行
Console.Write("Enter calculation: ");
num1 = Convert.ToInt32(Console.Read());
oprtr = Console.ReadKey().KeyChar;
num2 = Convert.ToInt32(Console.Read());
与
Console.Write("Enter calculation");
Console.Write("\nEnter 1st Operand: ");
num1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter Operator: ");
oprtr = Console.ReadKey().KeyChar;
Console.Write("\nEnter 2nd Operand: ");
num2 = Convert.ToInt32(Console.ReadLine());
编辑:
使用int.TryParse
方法避免异常,因为如果用户按任何字母或特殊字符,则无法存储为整数。
实施例
int num1;
if (!int.TryParse(Console.ReadLine(), out num1)
{
Console.WriteLine("Invalid Number");
}
else
{
//num1 is ready for calculations
}
另外,你应该避免使用整数,因为对于除法,整数/整数=整数,i-e 5/2 = 2
但它应该2.5