我有一个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();
}
答案 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"))