尝试计算 X/0 时创建 "warning"
Creating a "warning" when trying to calculate X/0
我想做一个计算器,问你想做什么,例如加法、减法等。然后它应该使用 if 语句来执行不同类型的计算。
但是现在当我开始除法时,我想知道如何处理除以 0。我希望程序在 he/she 输入 0
时警告用户,说类似的话"sorry you can't divide by 0
".
如果分母不为 0,我仍然希望它计算结果。
我得到的错误是我不能写:
if (Num02 == "0")
因为我不能使用整数或双精度等
如何以一种很好的方式解决这个问题,以便在下周展示我的 class/teacher?
这是我的代码:
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));
}
}
}
}
the error i seem to get is that i cant write:
"if (num02 == "0")" because i cant use ints or doubles etc.
您肯定是在正确的轨道上。通过在“0”周围添加引号,您可以将类型为 int
(Num02
) 的变量与 string
进行比较。相反,使用文字 0
(不带引号):
if (Num02 == 0)
{
// print warning here
}
else
{
// do division and print result
}
我建议用户输入 提取方法 (我们可以在其中检查 语法 - 如果用户输入 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");
}
}
}
我想做一个计算器,问你想做什么,例如加法、减法等。然后它应该使用 if 语句来执行不同类型的计算。
但是现在当我开始除法时,我想知道如何处理除以 0。我希望程序在 he/she 输入 0
时警告用户,说类似的话"sorry you can't divide by 0
".
如果分母不为 0,我仍然希望它计算结果。
我得到的错误是我不能写:
if (Num02 == "0")
因为我不能使用整数或双精度等
如何以一种很好的方式解决这个问题,以便在下周展示我的 class/teacher?
这是我的代码:
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));
}
}
}
}
the error i seem to get is that i cant write:
"if (num02 == "0")" because i cant use ints or doubles etc.
您肯定是在正确的轨道上。通过在“0”周围添加引号,您可以将类型为 int
(Num02
) 的变量与 string
进行比较。相反,使用文字 0
(不带引号):
if (Num02 == 0)
{
// print warning here
}
else
{
// do division and print result
}
我建议用户输入 提取方法 (我们可以在其中检查 语法 - 如果用户输入 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");
}
}
}