2 回答

TA貢獻(xiàn)1850條經(jīng)驗 獲得超11個贊
很可能輸入已關(guān)閉,或者 中的下一個標(biāo)記input不是雙精度。其中任何一個都會導(dǎo)致拋出異常,而不提前輸入,從而導(dǎo)致無限循環(huán)。
因此,您需要找出錯誤的原因,采取適當(dāng)?shù)拇胧?- 例如,類似:
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貢獻(xiàn)1816條經(jīng)驗 獲得超6個贊
只需添加 input.next()
} catch (Exception ex) {
System.out.println("Invalid value entered.. Enter again : ");
input.next();
}
input.next() 清除掃描儀。
添加回答
舉報