2015-10-06 59 views
0

程序顯示一個問題,用戶輸入1到5的數字。5個用戶的5個問題。然而,只要它是一個Int,程序就不會識別出好的輸入,或者不好的輸入。在它運行之前,我必須輸入很多次它再次運行Survey.presentQuestions()。我無法弄清楚爲什麼。如何驗證輸入是否爲Int並且在數字範圍內?

for (int i = 0; i < 5; i++) 
      { 
       for (int j = 0; j < 5; j++) 
       { 
        Survey.presentQuestion(j, i); 
        do{ 
         TempAns = in.nextInt(); 
         while (!(in.hasNextInt())) 
         { 
          System.out.println("Please enter integer value from 1 to 5!"); 
          in.next(); 
         } 
        }while(TempAns >= 1 && TempAns <= 5); 
        Survey.ResultArray[i][j] = TempAns; 

       } 
      } 
+0

您確定:while(TempAns> = 1 && TempAns <= 5);是正確的?不應該是(TempAns <1 || TempAns> 5); – dragon66

+0

您可能還需要移動TempAns = in.nextInt();在內部while循環下。 – dragon66

回答

1

更新試試這個,而不是

for (int i = 0; i < 5; i++) { 
    for (int i = 0; i < 5; i++) { 
     for (int j = 0; j < 5; j++) { 
      System.out.println("Student: "+(i+1)+" Grade: "+(j+1)); 
      System.out.println("Please enter integer value from 1 to 5!"); 
      TempAns = getNumber(); 
     } 
    } 

和這個其他方法

public int getNumber(){ 
    Scanner in =new Scanner(System.in); 
    int validatedNumber; 
    do{ 


    try{ 
     String toValidate=in.next(); 
     validatedNumber= Integer.parseInt(toValidate); 
     if (validatedNumber>0 && validatedNumber<6){ 
      return validatedNumber; 
     }else{ 
      System.out.println("Between 1 and 5!!"); 
     } 
    }catch(Exception e){ 
     System.out.println("You have to chose a number!"); 
    } 
    }while(true); 

} 
+0

dang。那很好。 – RIDDLEisVoltron

+0

實際上那不工作。它輸入字符時崩潰。當一個int不在我的(1-5)範圍內時,它會繼續。 – RIDDLEisVoltron

+0

完美的作品真棒。非常感謝。你能推薦一個關於try/catch語法的好教程嗎?根本不熟悉它。 – RIDDLEisVoltron

0

我假設您希望用戶輸入一個整數1-5並繼續下一個問題?如果是的話,試試這個:

替換:

    do{ 
         TempAns = in.nextInt(); 
         while (!(in.hasNextInt())) 
         { 
          System.out.println("Please enter integer value from 1 to 5!"); 
          in.next(); 
         } 
        }while(TempAns >= 1 && TempAns <= 5); 

有了:

while (true) { 
      TempAns = in.nextInt(); 
      if (TempAns >= 1 && TempAns <= 5) 
       return; 
      else 
       System.out.println("Please enter integer value from 1 to 5!"); 
     } 
+0

是的,當我輸入一個字符串或字符崩潰。 – RIDDLEisVoltron

相關問題