C#-While循环-字符串条件式

时间:2018-07-05 20:19:17

标签: c#

我试图确认用户仅输入“ OZ”或“ G”,并且如果他们输入的响应不是其他任何响应,它将要求他们再次输入。我遇到的问题是,无论例如输入“ G”还是“ OZ”,循环都会继续。

        Console.WriteLine("Ounces or Grams? \"Input OZ or G\"");
        string userInputType = Console.ReadLine();

        while (userInputType != "G" || userInputType != "OZ" || userInputType != "g")
        {
            Console.WriteLine("You must enter G or OZ for grams or ounces respectively.");
            userInputType = Console.ReadLine();
        }

条件:||或&&

|| “ OR”-是一个意思是一个或另一个或另一个的语句。

&&“ AND-是一个表示一个,另一个和其他的语句。

在原始帖子的上下文中,逻辑是检查“ OZ” ||正在传递“ G”字符串。因此,如果一个OR另一个返回True,则无论传入的其他字符串如何,它都是true。

对此的更正是更改||。 “或”为&&“与”。这样做的原因对于初学者/学生来说有点令人困惑,因为本能地将语句读为“当用户输入不等于“ OZ”并且不等于“ G”然后返回true时。”对于初学者/学生,我们希望编译器将其作为一条语句读取。这就是为什么与||混淆的原因发生。

2 个答案:

答案 0 :(得分:1)

您必须替换||对于&&

答案 1 :(得分:0)

也许?

    Console.WriteLine("Ounces or Grams? \"Input OZ or G\"");
    string userInputType = Console.ReadLine();  

    while(true) {
        if (userinputtype=="G" || userinputtype = "OZ") {  
            break; 
        }
        else { 
            Console.Writeline("You must enter G or OZ for grams or ounces respectively.");  
            userInputType = Console.ReadLine();  
        } 
     }