我正在使用扫描仪获取用户输入。如果用户输入名称,则将其添加到ArrayList
。如果用户未输入名称,则我想抛出异常,但我想继续获取答案的循环。
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;
}
为什么要无限递归?
从用户检索输入但使
确定他们输入的是有效数据?
提前致谢。
最佳答案
问题是您读取了两次输入。
我的意思是您在代码中有两次调用sc.nextLine()
方法。
尝试以下方法:
String rName = sc.nextLine();
try {
if(rName.isEmpty()){
throw new NullPointerException("Name cannot be blank.");
}
}