虽然无法识别字符串中的内容

时间:2019-09-14 03:30:48

标签: c# while-loop

我有一个while循环,用于检查字符串“ tipoMedia”中的内容是否正是我想要的内容,如果不是,他会保留while循环,以使用户可以输入两个选项(“ simples”或“ “ ponderada”)。当我运行项目(SharpDevelop,解决方案是控制台应用程序)时,while循环无法识别“ tipoMedia”中的内容是正确的,我什至在“ tipoMedia”中打印了内容,并向我显示了该内容是正确的

如果我将检查规则更改为int而不是字符串,则可以使用 像

Won't Work: while(tipoMedia != "simples" || tipoMedia != "ponderada")
Work: while(tipoMedia != 1.0f || tipoMedia != 2.0f)

//Tells the user to choose between "simples" or "ponderada", the right ones
Console.WriteLine("Escolha o tipo de media, digite 'simples' ou 'ponderada'");
//assign what the user write to the string
tipoMedia = Console.ReadLine();
//checks if the content inside the string is the right one
while(tipoMedia != "simples" || tipoMedia != "ponderada")
            {
            //Tells the user that the answer is wrong and the right options
            Console.WriteLine("A opção digitada esta incorreta, digite 'simples' ou 'ponderada'");
            tipoMedia = Console.ReadLine();
            }

Console showing while loop even with the right answer

1 个答案:

答案 0 :(得分:4)

while(tipoMedia != "simples" || tipoMedia != "ponderada")

要使此行的计算结果为假,tipoMedia必须不是简单的,而不能只是思考。

tipoMedia只能是“简单”或“ ponderada”,而不能两者都是。因此,您的while条件将始终为true。 (例如,当tipoMedia为“ simples”时,tipoMedia!=“ simples”为false,而tipoMedia!=“ ponderada”为true,因此while条件仍然为true)

更改您的||到&&,您应该会得到预期的结果。

while(tipoMedia != "simples" && tipoMedia != "ponderada")

或者,或者使用DeMorgan's Laws

while (! (tipoMedia == "simples" || tipoMedia == "ponderada"))