Я пытаюсь сделать цикл while, который предлагает пользователю повторно вводить данные, если они используют недопустимую запись. В моей программе я прошу пользователя ввести номер (0-3), поэтому, если они вводят что-то другое, кроме того, я хочу, чтобы появилось сообщение об ошибке, попросив их повторно ввести свои данные. Я не знаю, что я делаю неправильно в своей петле. Независимо от того, что я вхожу, я всегда получаю сообщение об ошибке.While Loop issue (Java)
String itemChoice = JOptionPane.showInputDialog(null, itemList);
itemChoiceNum = Integer.parseInt(itemChoice);
//test to make sure the input is valid
while (itemChoiceNum != 0 || itemChoiceNum != 1 || itemChoiceNum != 2 || itemChoiceNum != 3) {
JOptionPane.showMessageDialog(null, "Sorry that's not a valid choice. Please start again.");
itemChoice = JOptionPane.showInputDialog(null, itemList);
}
NumberFormatException
while (itemChoiceNum != 0 && itemChoiceNum != 1 && itemChoiceNum != 2 && itemChoiceNum != 3) {
try {
JOptionPane.showMessageDialog(null, "Sorry that's not a valid choice. Please start again.");
itemChoice = JOptionPane.showInputDialog(null, itemList);
itemChoiceNum = Integer.parseInt(itemChoice);
}
catch (NumberFormatException itemChoiceNum) {
JOptionPane.showMessageDialog(null, "Sorry that's not a valid choice. Please start again.");
}
Ошибка
Exception in thread "main" java.lang.NumberFormatException: For input string: "f"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at VendingClass.displayVend(VendingClass.java:82)
at VendingMachineDemo.main(VendingMachineDemo.java:12)
Это было! Спасибо! –
Последующие действия, есть ли способ показать сообщение об ошибке, если пользователь вводит строку? Когда я вставляю строку, программа вылетает из строя. –
Поймать 'NumberFormatException', что' Integer.parseInt' выдает и показывает пользователю диалоговое окно с соответствующим сообщением об ошибке. – rgettman