我对 C# 很陌生,正在尝试编写一个超级简单的循环
while ((var_app_choice != "Exit") || (var_app_choice != "Test"))
{
//stuff
}
我有一个控制台应用程序,最终用户将在其中输入一个值
如果该值不等于(!=)退出或测试,那么它应该循环。
我在这里做错了什么?
谢谢
如果您想退出循环,当用户输入
Exit
或 Test
时,您需要 &&
运算符而不是 ||
while ((var_app_choice != "Exit") && (var_app_choice != "Test"))
{
var_app_choice = Console.ReadLine();
//stuff
}
我认为你想要而不是...
如果
var_app_choice
的值为“Test”,则第一个条件为真,循环将执行。 同样,如果是“退出”,则第二个条件为真。 换句话说,你有一个无限循环......
假设 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) 它停止工作。
朋友,
考虑我有一个数据列表作为
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)的任何条件。
谢谢,如果我错了请纠正我。