尝试计算X / 0时创建“警告”

时间:2018-09-02 20:00:51

标签: c# calculation

我想制作一个询问您要做什么的计算器,例如加,减等。然后应使用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));
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

  

我似乎得到的错误是我无法写:

     

“ if(num02 ==“ 0”)“,因为我无法使用整数或双精度等。

您肯定在正确的轨道上。通过在“ 0”周围加上引号,您正在将intNum02)类型的变量与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");
      } 
   }
 }