好的,所以我是C#的新手,我只是想用控制台创建一个简单的计算器。我的问题是如何让用户在选择除零时为num1和num2选择不同的值,或者除以零以防止程序因未定义的结果而崩溃。我想我可以使用while循环检查并查看是否将结果作为int,如果不重复整个程序。我如何检查答案以验证结果是否为int?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
public static void Main(string[] args)
{
int num1;
int num2;
string operand;
float answer;
while ()
{
Console.WriteLine("Please enter the first number.");
num1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please enter which operator you would like to use(+,-,*,/)");
operand = Console.ReadLine();
Console.WriteLine("Please enter the second number.");
num2 = Convert.ToInt32(Console.ReadLine());
switch (operand)
{
case "+":
answer = num1 + num2;
Console.WriteLine(num1 + " + " + num2 + " = " + answer);
Console.ReadKey();
break;
case "-":
answer = num1 - num2;
Console.WriteLine(num1 + " - " + num2 + " = " + answer);
Console.ReadKey();
break;
case "*":
answer = num1 * num2;
Console.WriteLine(num1 + " * " + num2 + " = " + answer);
Console.ReadKey();
break;
case "/":
if (num2 == 0)
{
Console.WriteLine("You cannot devide by zero, please select a different number.");
num2 = Convert.ToInt32(Console.ReadLine());
}
else if (num1 == 0)
{
Console.WriteLine("You cannot devide zero, please select a different number.");
num1 = Convert.ToInt32(Console.ReadLine());
}
else
{
answer = num1 / num2;
Console.WriteLine(num1 + " / " + num2 + " = " + answer);
Console.ReadKey();
}
break;
}
}
}
}
}
答案 0 :(得分:0)
你真的只需要检查第二个值(num2)。您希望在阅读后立即进行评估。你如何处理它取决于你。你可以无限期地循环一段时间,但你也想要验证(与任何这些输入一样),如果他们无法理解输入的方向,则给用户一个退出选项。
答案 1 :(得分:0)
可能的解决方案是使用while
,见下文:
case "/":
while (num2 == 0)
{
Console.WriteLine("You cannot devide by zero, please select a different number.");
num2 = Convert.ToInt32(Console.ReadLine());
}
answer = num1 / num2;
Console.WriteLine(num1 + " / " + num2 + " = " + answer);
Console.ReadKey();
break;
但是,您应该考虑使用int.TryParse
方法(https://msdn.microsoft.com/en-us/library/system.int32.tryparse%28v=vs.110%29.aspx)进行更改,就好像用户键入的内容不是数字一样,Convert.ToInt32将抛出{{1} }(https://msdn.microsoft.com/en-us/library/sf1aw27b%28v=vs.110%29.aspx)。
答案 2 :(得分:0)
我认为cleanset sollution是提取一些方法(选择代码并右键单击鼠标 - >重构 - > extractMethod)。 其中一个功能应该是" getSecondNumber" 在该功能中,您可以使用"输入第二个数字或点击" q"退出。
如果Int.TryParse结果为false,或者数字== 0再次调用您的函数(并且您将进入&#34的起始位置;输入第二个数字......&#34)结束; 祝你好运