Как вы проверяете, не является ли строка не равной объекту или другому строковому значению в 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. Спасибо за вашу помощь, это очень ценно.
Ответы
Ответ 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".