Никак не получается вывести результат.Не завершается цикл

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    // write your code here
    Scanner scanner = new Scanner(System.in);
    int a = scanner.nextInt();
    int b = scanner.nextInt();
    int c = scanner.nextInt();
    int localMin = 0;
    while (a != -1 | b != -1 | c != -1) {
        if (a > b && b < c) {
            localMin++;
        }
        a = b;
        b = c;
        c = scanner.nextInt();
    }
    System.out.println("Количество локальных минимумов - " + localMin);
}

}


Ответы (1 шт):

Автор решения: Alex Rudenko

В данном случае для выхода из цикла, если одно из чисел не равно -1 оператор логического ИЛИ || должен использоваться в отрицательном условии:

while (!(a == -1 || b == -1 || c == -1)) {
//..
}

которое можно переписать по законам де Моргана NOT (A OR B) = NOT (A) AND NOT(B) через логическое И &&

while (a != -1 && b != -1 && c != -1) {
// ...
}
→ Ссылка