同时或不等于不工作?

问题描述 投票:0回答:4

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

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

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

如果该值不等于(!=)退出或测试,那么它应该循环。

我在这里做错了什么?

谢谢

c# string loops while-loop
4个回答
6
投票

如果您想退出循环,当用户输入

Exit
Test
时,您需要
&&
运算符而不是
||

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

2
投票

我认为你想要而不是...

如果

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


1
投票

假设 x=1;

这里很少有东西,

  • 让我们说 true 表示 ON,false 表示 OFF。我们有 Gate,当 Gate 为 ON 时,循环和“if 语句”将执行,否则不会执行。

                                                                  Output
    
 -When you use OR :    x!=1 || x!=2     :     OFF, ON      =   ON

 -When you use AND :   x!=1 && x!=2     :     OFF, ON      =   OFF

现在,如果您不了解德摩根定律或不了解电子学中的“与/或”门。让我告诉你 AND 和 OR 之间的区别在于,如果所有输入都为真,则 AND 门给出输出 true,而如果其任何一个输入为 true,则 OR 门给出输出 true 这就是为什么 x!=1 || 的结果x!=2 为真。 and Loop 继续循环 if 语句结果为 true。所以只要 while(true) :loop 一直循环下去。 while(false) 它停止工作。


1
投票

朋友,

考虑我有一个数据列表作为

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

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

您可能会认为输出应该只有苹果和微软。当它在索引 2 中遇到“exit”时,它应该停止。

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

您的数据不得等于“退出”AND也不等于“测试”。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.