Тройной условный цикл Do-while с несколькими логическими операторами - PullRequest
0 голосов
/ 12 мая 2018

Я не могу получить приведенный ниже цикл выполнения в Java.Спасибо за вашу помощь.

do{
//User enters a value for x
//User enters a value for y
}while(x==-1 && y==-1 || x==5 || y==10);

Я просто пытаюсь сделать следующее:
a) Если x и y ОБА равны -1, тогда завершить цикл
b) Если x равен 5ИЛИ y равен 10, затем завершите цикл

1 Ответ

0 голосов
/ 12 мая 2018

Вы приняли проблему не с той стороны. Там ваш цикл будет продолжаться там, где вы хотите остановиться.

Вы должны просто сделать следующее и отменить условие

do {

} while (!(x == -1 && y == -1 || x == 5 || y == 10));

Демо

public static void main (String[] args) {
    System.out.println(conditionTesting(0, -1));  // true
    System.out.println(conditionTesting(-1, -1)); // false
    System.out.println(conditionTesting(5, -1));  // false
    System.out.println(conditionTesting(-1, 10)); // false
    System.out.println(conditionTesting(6, 9));   // true
}

public static boolean conditionTesting(int x, int y) {
    return !(x == -1 && y == -1 || x == 5 || y == 10);
}

1017 * де Морган * Если вы хотите представить его, используя Закон Деморгана , вы можете сделать это, выполнив следующие шаги ¬((P ∧ Q) ∨ R ∨ S) ≡¬(P ∧ Q) ∧ ¬R ∧ ¬S ≡(¬P ∨ ¬Q) ∧ ¬R ∧ ¬S Итак, ваш окончательный перевод будет (x != -1 || y != -1) && x != 5 && y != 10 Демо Ideone

...