2 回答
TA贡献1850条经验 获得超11个赞
很可能输入已关闭,或者 中的下一个标记input不是双精度。其中任何一个都会导致抛出异常,而不提前输入,从而导致无限循环。
因此,您需要找出错误的原因,采取适当的措施 - 例如,类似:
public static double getInputNumber(Scanner input){
double num=0;
while(true) {
try {
num = input.nextDouble();
return num;
} catch (InputMismatchException ex) {
System.out.println("Invalid value entered.. Enter again : ");
} catch (NoSuchElementException ex) {
System.out.println("Input exhausted ");
return 0;
} catch (IllegalStateException ex) {
System.out.println("Scanner closed ");
return 0;
}
}
}
}
您还可以input.hasNextDouble()在致电之前检查一下nextDouble()
TA贡献1816条经验 获得超6个赞
只需添加 input.next()
} catch (Exception ex) {
System.out.println("Invalid value entered.. Enter again : ");
input.next();
}
input.next() 清除扫描仪。
添加回答
举报