C#.net-|| OR 运算符不正常。似乎正在作为 AND

C# .net - || OR operator not behaving. Seems to be working as AND

这可能只是我,但我一直在尝试在 c# 中做一个 do...while 循环,如果两个条件之一为真,循环将结束。

我正在使用||操作员。 Google 告诉我这是或,但我的循环仅在两个条件都为真时才结束。我做错了什么?

这是一个代码示例:

int sugar=0, salt=0, value=0;
string tLine;

Console.WriteLine("Enter integer values to add to Sugar and Salt.");
Console.WriteLine("The loop should end when either one reaches 10 or more.");

do {
    Console.Write("Sugar? =");
    tLine = Console.ReadLine();
    int.TryParse(tLine, out value);
    sugar =sugar+value;
    Console.Write("Salt? =");
    tLine = Console.ReadLine();
    int.TryParse(tLine, out value);
    salt =salt+value;
    }while ((sugar<10) || (salt<10));

Console.WriteLine("Sugar={0}, Salt={1}", sugar, salt);
Console.ReadKey();

或者你写

while ((sugar<10) && (salt<10));

只要两者都低于 10,while 就会继续。

每次满足条件时执行循环。所以你必须把它改成:

while ((sugar<10) && (salt<10))

while (!((sugar>=10) || (salt>=10)));

因为英文条件是:

"The loop should end when either one reaches 10 or more."

那么条件应该是:

do
{
    ...
}
while (Sugar < 10 && Salt < 10);

您需要使用“&&”。然后,如果 Salt 或 Sugar 变为 >= 10,&& 的结果将是 false,因此循环将终止。

但是,您可以通过反转比较结果来使用 ||,如下所示:

while (!(Sugar >= 10 || Salt >= 10))

但这更难阅读。

有些语言有 until,但 C# 没有。如果是这样,它看起来像:

until (Sugar >= 10 || Salt >= 10)

换句话说,until (condition)while (!condition)真的是一样的。