Я не кодировал через несколько лет и писал простые Java-программы, чтобы переоценить основные принципы. Тем не менее, у меня возникли проблемы с получением цикла do-while, чтобы действовать так, как я этого хочу. Я предполагаю, что я не понимаю, как работают циклы while, но я хочу, чтобы пользовательский ввод из System.in как int и продолжал запрашивать действительный ввод int, если они вводят другую форму данных. Что у меня есть:Java do-while loop simple issue
do {
System.out.print("Input: ");
userOption = userInput.nextInt();
} while (!userInput.hasNextInt());
System.out.println("You chose to: " + menuItems.get((userOption - 1)));
Это не работает по двум причинам. Во-первых, если я ввожу значение non-int, он сразу же бросает вызов исключению входного несоответствия. Во-вторых, если я действительно вхожу в действительный int, мне всегда нужно вводить его дважды. IE, консоль спросит «Вход:», я введу «2», консоль перейдет на следующую строку и ждет другого ввода (но ничего не печатает), а затем, когда я ввожу второй int, выводит «Вы выбрали [...]».
Я пробовал более дюжины различных вариантов, которые только продолжают усложняться, а внутри - внутри, внутри - внутри, но я уверен, что я слишком усложняю вопросы, и я пропустил простую концепцию. Любая помощь очень ценится!
1) Если вы поймаете исключение, это не сработает (исключения могут помочь, а не быть помехой), и там вы можете поместить свою логику на неправильный ввод и 2) вызвать 'hasNextInt' перед чтением 'int' и сохранить значение в булевой переменной. – m0skit0