我想制作一个询问您要做什么的计算器,例如加,减等。然后应使用if语句执行不同类型的计算。
但是现在我要进行除法运算了,我想知道如何处理0的除法运算。我希望程序在用户输入0
时警告用户,并说“抱歉,您可以除以0
”。
如果分母不为0,我仍然希望它计算结果。
我得到的错误是我无法写:
if (Num02 == "0")
因为我不能使用整数或双精度等。
我如何以一种很好的方式解决此问题,以在下周向我的班级/老师展示?
这是我的代码:
using System;
namespace Calculator
{
class MainClass
{
static void Main(string[] args)
{
Start:
int Num01;
int Num02;
string Answer;
Console.WriteLine("What do you want to do?");
Answer = Console.ReadLine();
if (Answer == "Division")
{
Console.WriteLine("Write number");
Num01 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Divided by?");
Num02 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(Num01 + "/" + Num02 + "=" +
(Num01 / Num02));
}
}
}
}
答案 0 :(得分:1)
我似乎得到的错误是我无法写:
“ if(num02 ==“ 0”)“,因为我无法使用整数或双精度等。
您肯定在正确的轨道上。通过在“ 0”周围加上引号,您正在将int
(Num02
)类型的变量与string
进行比较。而是使用文字0
(不带引号):
if (Num02 == 0)
{
// print warning here
}
else
{
// do division and print result
}
答案 1 :(得分:0)
对于用户输入,我建议使用提取方法(我们可以在其中检查语法-如果用户输入bla-bla-bla
而不是数字,会产生额外的条件怎么办? -我们不接受0
作为第二个数字,等等):
private static int ReadValue(string title,
Func<int, bool> extraCondition = null,
string extraConditionText = null) {
int result;
while (true) { // keep on asking until correct input provided
Console.WriteLine(title);
if (!int.TryParse(Console.ReadLine(), out result)) // syntax check
Console.WriteLine("Syntax error, please, input integer value");
else if (extraCondition != null && !extraCondition(result)) // extra check if any
Console.WriteLine(string.IsNullOrEmpty(extraConditionText)
? "Incorrect value"
: extraConditionText);
else
return result;
}
}
那你可以放
static void Main(string[] args) {
while (true) {
int Num01;
int Num02;
Console.WriteLine("What do you want to do?");
string Answer = Console.ReadLine().Trim();
if (string.Equals(Answer, "Quit", StringComparison.OrdinalIgnoreCase)) {
break;
}
else if (string.Equals(Answer, "Division", StringComparison.OrdinalIgnoreCase)) {
Num1 = ReadValue("Write number");
Num2 = ReadValue("Divided by?", x => x != 0, "Sorry you can't divide by 0");
Console.WriteLine($"{Num1} / {Num2} = {Num1 / Num2}");
}
else {
Console.WriteLine("Sorry, it's an incorrect option");
}
}
}