我已經制作了一種在 java 中獲取員工薪水的方法。此代碼獲取薪水并檢查輸入的值是否為整數
static int askSalary(){
int s;
try {
s = sc.nextInt();
}catch (Exception e){
System.out.println("Not valid salary");
s = askSalary();
}
return s;
}
但是,每當首先輸入一個非整數值時,catch 塊中的列印陳述句就會不斷重復。你能告訴我哪里出錯和解決方案。
提前致謝
uj5u.com熱心網友回復:
問題是,Scanner 的每種方法的作業方式。如果您輸入了非數字輸入,nextInt()則不會消耗該行,這就是您獲得無限遞回的原因。所以要解決這個問題,請致電next().
static int askSalary(){
int s;
try {
s = sc.nextInt();
}catch (Exception e){
System.out.println("Not valid salary");
sc.next(); //This will consume the previous line.
s = askSalary();
}
return s;
}
你的方法可以這樣改進:
static int askSalary() {
try {
return sc.nextInt();
}catch (Exception e){
System.out.println("Not valid salary");
sc.next();
return askSalary();
}
}
uj5u.com熱心網友回復:
它正在重復,因為您創建了一個回圈。
當操作askSalary()由于問題而無法完成時,catch 塊會再次運行該操作。這意味著您將永遠不會停止嘗試askSalary(),并且由于似乎存在編程問題,它永遠不會成功完成。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/433415.html
上一篇:如何從流中收集雙打串列?
