Могу ли я иметь больше условий в одном цикле while? - PullRequest
0 голосов
/ 18 июня 2019

Могу ли я спросить вас, могу ли я иметь два условия в одном цикле while, как этот?

Например:

Я попробовал почти все в своем собственном коде.

int a = 0;
bool b = false;

while(a!=5 || b!=true) {
a++;
}

Console.WriteLine("A is successfuly loaded into 5.");
Console.WriteLine("Bool is still " + b);

Я ожидаю, что на выходе будет 5, но в моей программе у меня бесконечный цикл.

Ответы [ 5 ]

0 голосов
/ 18 июня 2019

Я не уверен, какое именно поведение вы ищете, но есть три аналогичных варианта написания вашего примера цикла, в зависимости от того, как вы хотите, чтобы два условия вели себя:

Или

while(a != 5 || b != true) {
a++;
}

Цикл будет продолжаться, если: a != 5 оценивает "true" или b!= true оценивает "true" или оба a != 5 и b!= true оценивают "true".В первый раз, когда оба выражения оценятся как "ложные", цикл завершится.

И

while(a != 5 && b != true) {
a++;
}

Цикл продолжится, если обаa != 5 и b!= true оценивают «истина».В первый раз, когда одно или оба из этих выражений оцениваются как "ложные", цикл завершится.

XOR

while((a != 5 && b != true) || (a == 5 && b == true  )) {
a++;
}

Циклбудет продолжаться, если оба значения a != 5 и b!= true оценят значение «истина», или оба значения оценят «ложь».В первый раз, когда точно one , эти два выражения оцениваются как "ложь", цикл завершится.

0 голосов
/ 18 июня 2019

При разработке чека с несколькими условиями, ключ должен думать о том, как работают операции && и ||.Использование || приведет к продолжению цикла, пока оба условия не станут ложными.Использование && приведет к продолжению цикла, пока либо условие не станет ложным.

В вашем случае вы использовали ||, поэтому цикл будет продолжаться до a=5 AND b=true.Поскольку b никогда не будет истинным, вы получили бесконечный цикл.

0 голосов
/ 18 июня 2019

Переменная b имеет значение false и не изменяется.

Итак, условие b!=true всегда верно.

Это условие находится справа от оператора "или" (||).

Следовательно, получается бесконечный цикл.

0 голосов
/ 18 июня 2019

Это бесконечный цикл из-за вашего второго условия. while(a!=5 || b!=true) использует операторы || (ИЛИ), что означает, что пока одно из условий истинно, все условие истинно

T || F = T ---> True ИЛИ False == Верно

F || T = T ---> False OR True == True

T || T = T ---> True ИЛИ True == Правда

F || F = F ---> Ложь ИЛИ Ложь == Ложь

Вы назначили b = false, а затем проверьте b!=true (эквивалентно b == false [это то, что вы ему присвоили)). Это условие true, из-за которого оно бесконечно входит в цикл.

Оба значения a!=5 || b!=true должны быть ложными, чтобы выйти из цикла.

0 голосов
/ 18 июня 2019

У вас есть бесконечный цикл, потому что b всегда ложен, и, следовательно, цикл продолжается, так как || означает OR, и вы реализовали его, чтобы продолжать, пока a не 5 ИЛИ b не соответствует действительности.

...