我很新的編程壞的解釋和/或糟糕的代碼非常抱歉......無限while循環;輸入驗證;不知道該怎麼做才能讓它在讀取輸入之前進行讀取,我應該怎麼做?
不管怎麼說,我目前正在使用「method overload
」的轉讓,我希望能夠得到一個來自用戶的double
或int
。
我的第一個代碼工作,所以我決定添加一個else
到最後的if
語句的末尾,檢查不良輸入並重申了整個代碼。問題是,當你第一次放置數字時,代碼工作正常,如果你輸入了錯誤的輸入,它將啓動while
循環,不管任何輸入,都會重新迭代代碼塊。我知道它只是忽略了if
聲明,因爲它們之前沒有任何輸入(或任何阻止它的輸入?)。我需要一些代碼檢查獲取輸入,然後在聲明變量類型之前檢查它是整數還是雙精度的方法......或者如果有更好的方法請分享...如果您需要更多的知識回覆此問題後或任何...這裏 此外,其還不算完,稱之爲草案,如果你
public class LoanRates {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
boolean x = false;
while(x = true){
System.out.println("please enter a number");
x = false;
if (in.hasNextInt()){
int rate = 0;
rate = getNumbers(rate, in);
System.out.println(rate);
break;
} else if(in.hasNextDouble()){
double rate = 0;
System.out.println("please enter a number");
rate = getNumbers(rate, in);
System.out.println(rate);
break;
}else {
System.out.print("please enter a number");}
}
System.out.print("did it work?");
}
public static double getNumbers(double rate, Scanner in){
rate =in.nextDouble();
return rate;
}
public static int getNumbers(int rate, Scanner in){
rate = in.nextInt();
return rate;
}
}
我做到這一點,它一直沒有給我一個機會做輸入重申...下面有一個例子發生什麼情況:請輸入數字請輸入數字輸入數字輸入數字輸入數字輸入數字輸入數字輸入數字輸入數字輸入數字輸入數字輸入數字輸入數字輸入數字輸入numberplease輸入數字輸入數字輸入數字輸入數字輸入數字輸入數字 – 2014-09-22 03:12:31
查看我的代碼:) – 2014-09-22 03:30:11
問題在於它只在(if(in.hasNext [int/double]))和while循環滑過之後纔得到輸入......它一直在重申......你可以測試代碼,輸入一個字符串你會看到它不斷重申同樣的事情...... – 2014-09-22 03:45:13