Подтвердить что ты не робот

Как вы проверяете, не является ли строка не равной объекту или другому строковому значению в java?

Я пытаюсь создать часы, которые пользователь может установить. Я хотел, чтобы у пользователя были заданы вопросы, и они отвечают словами "да" или "нет". Я сделал это для вещей, которые не меняются с использованием этого кода, например, нужно ли пользователю показывать секунды или нет, но это не работает, когда я хочу, чтобы строка изменилась, скажем, от AM до PM когда часы превышают 12. Вот что я использую:

    System.out.println("AM or PM?"); 
    Scanner TimeOfDayQ = new Scanner(System.in);
    TimeOfDayStringQ = TimeOfDayQ.next();

    if(!TimeOfDayStringQ.equals("AM") || !TimeOfDayStringQ.equals("PM")) {
        System.out.println("Sorry, incorrect input.");
        System.exit(1);
    }

    ...

    if(Hours == 13){
        if (TimeOfDayStringQ.equals("AM")) {
            TimeOfDayStringQ.equals("PM");
        } else {
            TimeOfDayStringQ.equals("AM");
        }
                Hours = 1;
        }
     }

Каждый раз, когда я вводил что-либо, когда он подсказывает мне, добавляю ли я AM, PM или другие мудрые, он дает мне ошибку, которую я написал, а затем завершает. Когда я удаляю раздел кода, который завершает программу с ошибкой, он не изменит строку от AM до PM, когда часы равны 13. Спасибо за вашу помощь, это очень ценно.

4b9b3361

Ответ 1

Измените свой код на:

System.out.println("AM or PM?"); 
Scanner TimeOfDayQ = new Scanner(System.in);
TimeOfDayStringQ = TimeOfDayQ.next();

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { // <--
    System.out.println("Sorry, incorrect input.");
    System.exit(1);
}

...

if(Hours == 13){
    if (TimeOfDayStringQ.equals("AM")) {
        TimeOfDayStringQ = "PM"; // <--
    } else {
        TimeOfDayStringQ = "AM"; // <--
    }
            Hours = 1;
    }
 }

Ответ 2

вы хотите использовать && чтобы убедиться, что он не равен "AM" и не равен "PM"

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) {
    System.out.println("Sorry, incorrect input.");
    System.exit(1);
}

чтобы быть понятным, вы также можете сделать

if(!(TimeOfDayStringQ.equals("AM") || TimeOfDayStringQ.equals("PM"))){
    System.out.println("Sorry, incorrect input.");
    System.exit(1);
}

иметь фразу not (one or the other) в коде (помните (беззвучные) скобки)

Ответ 3

Измените свой || к && поэтому он будет работать только в том случае, если ответ не соответствует "AM" или "PM".