Проблема с проверкой в конструктороре - Java

У меня есть конструтор в который значения я буду вводить с клавиатуры, и например я проверяю переменную waga на значение, переменая должна быть в нужном диапазоне, и проверка здесь работает отлично. Но я хочу проверить еще одну переменную bluetooth, и он должен быть равен только t или n, в противной случае, должно быть поймано исключение. Но сейчас что бы я не вводил у меня выскакивает это исключение, почему так? И еще такой вопрос почему после первого исключение я должен писать scanner.nextLine(), для того что бы оно сьело пустую строку, как она там появляеться?

    public KomputerPrzenosny() {
        super();
        this.waga = scanner.nextDouble();
        if (this.waga < 1.2 || this.waga > 3.5)
            throw new IllegalArgumentException("Waga musi byc z przedzialu 1.2kg do 3.5kg");
        scanner.nextLine();
        this.bateria = scanner.nextLine();
        this.bluetooth = scanner.nextLine();
        if (!this.bluetooth.equals("t") || !this.bluetooth.equals("n"))
            throw new IllegalArgumentException("Bluetooth powinien przyjac wartosc: t lub n");
    }

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

Автор решения: Grundy

Проблема в последнем условии:

if (!this.bluetooth.equals("t") || !this.bluetooth.equals("n"))

В данном случае оно может вернуть false только тогда, когда bluetooth одновременно и t и n, что довольно тяжело реализовать.

Для решения достаточно заменить || на &&, в этом случае проверяется, что значение и не t и не n, что и требовалось по условию.

→ Ссылка