【问题标题】:While or and not equal to not working?虽然或不等于不工作?
【发布时间】:2012-09-25 02:06:24
【问题描述】:

我对 C# 很陌生,正在尝试编写一个超级简单的循环

        while ((var_app_choice != "Exit") || (var_app_choice != "Test"))
        {
            //stuff
        }

我有一个终端用户将在其中输入值的控制台应用程序

如果此值不等于 (!=) 到 Exit OR Test,那么它应该循环。

我在这里做错了什么?

谢谢

【问题讨论】:

标签: c# string loops while-loop


【解决方案1】:

朋友,

假设我有一个数据列表

List dataList = new List() { "Apple", "Microsoft", "exit", "Oracle", "Android" };

int i = 0; 而 (dataList[i] != "exit" || dataList[i] != "test") { Console.WriteLine(dataList[i]); 我++; }

您会期望输出应该只有 Apple 和 Microsoft。当它在索引 2 中遇到“退出”时,它应该停止。

真正发生的事情(考虑它正在验证“退出”)是第一个条件失败,这意味着 NotEqualTo 运算符工作正常。问题是您的 OR 运算符。由于“exit”不等于“test”,所以条件通过,继续进入循环。

您的数据不能等于“exit”,也不能等于“test”。

认为你有问题。供您参考,While(condn){} 在这里您可以提及任何输出布尔值(真或假)的条件。

谢谢,如果我错了,请纠正我。

【讨论】:

    【解决方案2】:

    我认为你想要而不是……

    如果var_app_choice 的值为“Test”,则第一个条件为真,循环将执行。同样,如果是“退出”,则第二个条件为真。换句话说,你有一个无限循环......

    【讨论】:

      【解决方案3】:

      如果您想跳出循环,当用户输入ExitTest 时,您需要&& 运算符而不是||

      while ((var_app_choice != "Exit") && (var_app_choice != "Test"))
          {
              var_app_choice = Console.ReadLine();
              //stuff
          }
      

      【讨论】:

      • 我想我需要更多的睡眠!这正是我想要的,谢谢!
      • @user1718989,不客气,欢迎来到 StackOverflow :)
      • 根据德摩根定律也可以写成:while (!(var_app_choice == "Exit" || var_app_choice == "Test")) { ... }。 “not”运算符!已被“拉出”,“and”改为“or”。
      • 我同意你的版本是最清楚的。我只是想给出另一个正式的表达“选择不是退出测试”
      猜你喜欢
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多