如果用户输入错误的值,我想重复一些代码行

时间:2018-01-08 14:02:22

标签: c#

对不起,如果多次询问这个问题,我搜索了答案,但找不到用C#语言答案的答案。我的代码有几个问题。 (我也可以在那里使用switch bock,但我需要使用if块)。问题是,如果用户输入例如""对于操作,程序继续运行直到结束并输出输入中存在错误。所以我想给用户第二次机会"在输入和我的程序中输入正确的操作或编号(如果用户在数字标签中输入无效输入,程序也退出),重复问题直到用户输入正确的一个。希望您理解。感谢。

using System;

namespace Calculator
  {
class Program
{
    static void Main()
    {
       while(true)
       {

       double num1;
        Console.Write("Enter a number: ");
       string number1 =  Console.ReadLine();
       if (double.TryParse(number1, out num1)) 
       {
           Console.WriteLine("First number is " + num1);
       } else if(number1.ToLower() == "quit")
       {
           Console.WriteLine("Goodbye...");
          break;
       } else
       {
           Console.WriteLine("That is not a number");
          break;

       }
       //Prompt the user for an operation (+ - / *).

       Console.Write("Enter an operation: ");
       string operation = Console.ReadLine();
          if(operation.ToLower() == "quit")
          {
              Console.WriteLine("Goodbye...");

          }

       double num2;
       Console.Write("Enter second number: ");
       string number2 = Console.ReadLine();
       if(double.TryParse(number2, out num2))
       {
           Console.WriteLine("Second number is " + num2);

       } else if(number2.ToLower() == "quit")
       {
           Console.WriteLine("Goodbye...");
          break;
       } else
       {
           Console.WriteLine("That is not a number");

       }

       if(operation == "+")
       {
           Console.WriteLine(num1 + num2);       
       } else if(operation == "-")
       {
           Console.WriteLine(num1 - num2);
       } else if(operation == "*")
       {
           Console.WriteLine(num1 * num2);
       } else if(operation == "/")
       {
           Console.WriteLine(num1 / num2);
       } else if(operation == "^")
       {
           Console.WriteLine(Math.Pow(num1, num2));
       } else 
       {
           Console.WriteLine("---------------------\nSomething went 
          wrong,\nplease check your input and try again");
       }

       }
    }
  }
}

2 个答案:

答案 0 :(得分:2)

考虑你想要表达的语义逻辑:

  

虽然输入未被解析为数字,但提示输入。

这个逻辑是否使用了类似于C#中某些关键字的术语?这描述了一个循环,它会反复提示用户输入,直到该输入可以被解析为数字。例如,简单版本可能如下所示:

double num1;
string number1;
do
{
    Console.Write("Enter a number: ");
    number1 = Console.ReadLine();
} while (!double.TryParse(number1, out num1);

您可以添加更多可能向用户显示消息的逻辑,告诉他们这不是数字,他们应该再试一次。您可以添加更多逻辑,在放弃用户之前限制尝试次数。等

但基本上任何时候你都想要重复某些动作,直到满足一些逻辑条件,你想要的就是循环。

答案 1 :(得分:0)

我不确定这是否是您被阻止的原因,但您使用'break'代码中的任何地方都会退出您的while循环。

鉴于您的代码,如果您想继续下一个循环迭代,如果用户没有输入数字,您应该使用“continue

我希望有所帮助;)

编辑: PS:我强烈建议你按照上面的评论来获得更好的代码流:)祝你好运!