我是C sharp Programming的新手,我坚持使用一个程序来开发一个类似于计算器的程序,它将用户的输入转换为一个名为choice的int数据类型将读取用户的两个操作数进行计算,然后执行一个开关循环,根据所选的选项执行所需的操作,并给出输出结果。显示结果并打破案例后,程序将询问用户是否继续或不继续,反馈将存储在将要比较的字符变量上,如果选择Y,它将把程序的执行重定向到开始标签。 以下是相同的代码:
public static void Main(string[] args)
{
int choice,op1,op2;
char ch;
start:
Console.WriteLine("Enter First Operand");
op1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter Second Operand");
op2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter your Input \n1. For Addition \n2.For Subtraction \n3.For Multiplication \n4.For Division");
choice = Convert.ToInt32(Console.ReadLine());
switch (choice)
{
case 1:
Console.WriteLine(op1+op2);
break;
case 2:
Console.WriteLine(op1 - op2);
break;
case 3:
Console.WriteLine(op1*op2);
break;
case 4:
Console.WriteLine(op1/op2);
break;
default:
Console.WriteLine("Please enter valid Choice");
break;
}
end:
Console.WriteLine("Do you want to Continue(Y/N)?");
ch=Convert.ToChar(Console.Read());
if (ch == 'Y')
{
goto start;
}
else if (ch == 'N')
{
Console.ReadKey(true);
}
else
{
Console.WriteLine("Please Enter Valid Choice");
goto end;
}
}
但是当我运行代码时,它首次按需要输出,但是当我选择' Y'它显示错误"类型' System.FormatException'发生在mscorlib.dll"。请建议我一些更正
答案 0 :(得分:6)
替换ch=Convert.ToChar(Console.Read());
ch = Console.ReadKey(true).KeyChar;
虽然如果我是纯粹主义者,我不得不说丢失标签并使用while循环。
答案 1 :(得分:1)
我已经测试了你的代码。 在线下面
ch=Convert.ToChar(Console.Read());
只需添加以下行,因为Console.Read()读取单个字符额外输入在缓冲区中。所以在read()之后清除缓冲区只需添加以下行。
Console.ReadLine();