Я использую сканер, чтобы получить пользовательский ввод. Если пользователь вводит имя, я добавляю его к ArrayList
. Если пользователь не вводит имя, тогда я хочу исключить исключение, но я хочу продолжить цикл, который получит ответ.try catch for Scanner
for(int i = 0; i < totalLanes; i++){
runArr.add(this.addRacer());
}
public static String addRacer() throws NullPointerException{
System.out.print("Enter a name for a racer: ");//Method uses try catch to catch a NullPointerException.
Scanner sc = new Scanner(System.in);
String rName = null;
try {
if(!sc.nextLine().isEmpty()){
rName = sc.nextLine();
}else{
throw new NullPointerException("name cannot be blank");
}
}
catch (NullPointerException e) {
System.out.println(e.toString());
System.out.print("Enter a name for a racer: ");
addRacer();
}
return rName;
}
- Почему это рекурсивный бесконечно?
- Каков наилучший способ получить данные от пользователя, но сделать уверен, что они вводят действительные данные?
Заранее спасибо.
В чем проблема с программированием? Вопрос не ясен. – SteelToe
Это будет длиться бесконечно, если 'addRacer' не возвращается. Согласно вашему коду, это произойдет, если условие 'if' никогда не будет удовлетворено .... Прочитайте ответ @Grzegorz Górkiewicz ниже –