Итак, проблема с этим кодом заключается в том, что если он итерации по циклу более одного раза, закрытие сканера приводит к тому, что код пренебрегает сканированием для дальнейшего ввода пользователем. Я понимаю, что проблема должна быть внутренней в классе Scanner, но есть ли у кого-нибудь способ закрыть сканер безопаснее? (Это может помочь скопировать код и попробовать ввести «55» или «j», например, если вы не осознаете проблему, которую я сейчас имею).Java.util.Scanner, выпуск с закрытием
public static void main(String[] args){
int numCom = 0, count = 0;
boolean valid = false;
do{
Scanner num = new Scanner(System.in);
try{
if(count == 0){
System.out.println("Okay, how many adversaries would you like to be put up against? (between 1-8)");
count++;
}else{
System.out.println("Error!\nPlease enter a number between 1-8.");
}
numCom = num.nextInt();
}catch(Exception e){}
if(numCom < 9 && numCom > 0){
valid = true;
}
num.close();
}while(!valid);
}//main()
Вы комментировали ответы на все вопросы, кроме моего. Что-то не так с этим? – Boann
Извините, я на самом деле не был на этом сайте некоторое время (недавно был плавный парусный спорт). Я ушел от попытки закрыть Scanners вообще для таких вещей, поскольку он также закрывает входной поток (System.in для этого случая). Если есть возможность снова открыть поток, это будет хорошо. –
Я уже ответил на все это ... – Boann