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() 清除掃描儀。
添加回答
舉報