我应该使用"else"来解决这个问题吗?



所以,我对编程世界还是个新手,并从YouTube上的一段关于C#的视频开始学习。视频进行到一半时,他创建了一个计算器,让你选择要使用的运算符(+、-等(因为我不想只是复制他的代码,所以我做了一些更改,这样我就可以自己学习新东西,基本上,在他的代码中,如果有人键入了不正确的符号(或除+-*/之外的任何其他符号(,就会给用户一个错误,但这种情况只发生在最后(在该人键入第二个数字之后(

我想做的是,如果这个人没有正确键入上面4个符号中的一个,他们会立即收到一个错误,而不是在最后,这有点奏效,但即使这个人正确键入了符号,错误也会出现!我做错了什么?

以下是代码(有些部分是葡萄牙语的,但它们与代码本身无关(:

using System;
namespace Calculadora
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Bem vindo a calculadora");
Console.WriteLine("Agora vamos fazer alguns cálculos");
Console.Write("Para começar, escolha um número: ");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.Write("Agora, qual operação matemática você quer fazer? (Escolha entre +, -, * ou /): ");
string op = Console.ReadLine();
if (op != "+")
if (op != "-")
if (op != "*")
if (op != "/")
Console.WriteLine("Obs: esse erro foi escrito sem ajuda de um tutorial escrito");
Console.WriteLine("Você digitou um comando de operação inválido, tente novamente");
Console.WriteLine("Lembre se que os comandos valídos são: + | - | * | / ");
Console.ReadLine();

Console.Write("Escolha o outro número: ");
double num2 = Convert.ToDouble(Console.ReadLine());
if (op == "+")
{
Console.WriteLine("O resultado é: ");
Console.WriteLine(num1 + num2);
Console.ReadLine();
}
else if (op == "-")
{
Console.WriteLine("O resultado é: ");
Console.WriteLine(num1 - num2);
Console.ReadLine();
}
else if (op == "*")
{
Console.WriteLine("O resultado é: ");
Console.WriteLine(num1 * num2);
Console.ReadLine();
}
else if (op == "/")
{
Console.WriteLine("O resultado é: ");
Console.WriteLine(num1 / num2);
Console.ReadLine();
}
}
}
}

我如何修复它,以便如果用户正确键入符号,他们就可以继续操作?

第1版:我在第一个"if"后面添加了{},并将错误消息放在括号之间,对另一个if也做了同样的操作,但在它之前添加了一个else,仍然是同样的问题!

if (op != "+")
if (op != "-")
if (op != "*")
if (op != "/")

问题出在上面的代码行。让我们假设我输入了"+",所以第一个if语句的求值结果为false,其余为true。但是不管怎样,控制流都会执行以下代码行:

Console.WriteLine("Obs: esse erro foi escrito sem ajuda de um tutorial escrito");
Console.WriteLine("Você digitou um comando de operação inválido, tente novamente");
Console.WriteLine("Lembre se que os comandos valídos são: + | - | * | / ");
Console.ReadLine();

我想如果我给你这么多提示,你会很感兴趣的。

编辑:请在否决答案时说明原因。

您可以将四个测试组合在一个表达式中并编写

if (op != "+" && op != "-" && op != "*" && op != "/") {
Console.WriteLine("Obs: esse erro foi escrito sem ajuda de um tutorial escrito");
Console.WriteLine("Você digitou um comando de operação inválido, tente novamente");
Console.WriteLine("Lembre se que os comandos valídos são: + | - | * | / ");
Console.ReadLine();
}

确保在条件为true时不要忘记要执行的代码周围的大括号。

但由于如果用户输入了错误的内容,则必须重新输入操作标志,因此最好使用循环

while (true) {
Console.Write("Agora, qual operação matemática você quer fazer? (Escolha entre +, -, * ou /): ");
string op = Console.ReadLine();
if ("+-*/".Contains(op) && op.Length == 1) break; // exit the loop.
Console.WriteLine("Obs: esse erro foi escrito sem ajuda de um tutorial escrito");
Console.WriteLine("Você digitou um comando de operação inválido, tente novamente");
Console.WriteLine("Lembre se que os comandos valídos são: + | - | * | / ");
Console.ReadLine();
}

最新更新