对不起,如果多次询问这个问题,我搜索了答案,但找不到用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");
}
}
}
}
}
答案 0 :(得分:2)
考虑你想要表达的语义逻辑:
虽然输入未被解析为数字,但提示输入。
这个逻辑是否使用了类似于C#中某些关键字的术语?这描述了一个循环,它会反复提示用户输入,直到该输入可以被解析为数字。例如,简单版本可能如下所示:
double num1;
string number1;
do
{
Console.Write("Enter a number: ");
number1 = Console.ReadLine();
} while (!double.TryParse(number1, out num1);
您可以添加更多可能向用户显示消息的逻辑,告诉他们这不是数字,他们应该再试一次。您可以添加更多逻辑,在放弃用户之前限制尝试次数。等
但基本上任何时候你都想要重复某些动作,直到满足一些逻辑条件,你想要的就是循环。
答案 1 :(得分:0)