即使用户输入的匹配字符串操作,语句总是仍会生成false
,而该词又会显示错误提示。
请原谅我的代码,如果它看起来平庸,我刚开始学习编程不少于一周。我认为我的问题太具体了,这就是为什么我很难找到解决方案的原因。任何都会感激的。
Console.Write("What Operation?: ");
string input = Console.ReadLine();
if (input == "+")
{
op = input;
}
if (input == "-")
{
op = input;
}
if (input == "*")
{
op = input;
}
if (input == "/")
{
op = input;
}
else
{
op = "Enter a valid operation!!!";
Console.WriteLine(op);
Console.ReadLine();
}
如果用户编写了正确的操作:应将其存储到“ op”,然后将其用于方程式。
答案 0 :(得分:4)
您可以尝试循环:不断询问input
不在validInputs
内的时间:
// Let's organize all valid input as a collection for better
// readability and better maintenance
HashSet<string> validInputs = new HashSet<string>() {
"+", "-", "*", "/",
};
// Keep asking...
while (true) {
// $"...{string.Join(...)}..." let's be nice and let user know
// which operations are supported: "+, -, *, /"
Console.Write($"What Operation? ({string.Join(", ", validInputs)}): ");
// Trim() - let's be nice and tolerate leading / trailing spaces
string input = Console.ReadLine().Trim();
// ... until user provides a valid input (i.e. which is in validInputs)
if (validInputs.Contains(input)) {
op = input;
break;
}
Console.WriteLine("Enter a valid operation!!!");
}
答案 1 :(得分:3)
else
块与上一个if
语句相关,因此您具有:
if (input == "/")
{
op = input;
}
else
{
op = "Enter a valid operation!!!";
Console.WriteLine(op);
Console.ReadLine();
}
这将意味着else
块将在每次输入不等于"/"
时执行。
可以使用if
语句来代替使用大量的switch
语句:
Console.Write("What Operation?: ");
string input = Console.ReadLine();
string op;
switch (input)
{
case "+":
op = input;
break;
case "-":
op = input;
break;
case "*":
op = input;
break;
case "/":
op = input;
break;
default:
op = "Enter a valid operation!!!";
Console.WriteLine(op);
Console.ReadLine();
break;
}
答案 2 :(得分:1)
您的情况下的else为上面的if条件的else。因此,只要输入不是“ /”,其他输入就会触发。
要解决此问题,可以将“ if if”(第二个)更改为“ else if”(第四个)。
答案 3 :(得分:1)
此处的'else'块仅与最后一个'if'块(输入=='/')有关,因此任何非'/'的输入都将进入该else块。
我相信您想做的是 所有其他检查均失败时执行上一次检查。为此,您需要一个“ else if”:
if (input == "+")
{
op = input;
} else if (input == "-")
{
op = input;
} else if (input == "*")
{
op = input;
} else if (input == "/")
{
op = input;
}
else
{
op = "Enter a valid operation!!!";
Console.WriteLine(op);
Console.ReadLine();
}
不过,更好的方法(更具可读性)是使用switch