2015-11-17 40 views
0

我試圖驗證用戶輸入的只有1,2或3.到目前爲止,我已經使用sc.hasNextInt()來驗證整數,但不是那些特定的。有人可以幫忙嗎?我的代碼如下。驗證java中某些值的整數

System.out.print("Enter Department Number: "); 
while (!sc.hasNextInt())     
{ 
    System.out.println("Invalid entry. Please enter 1, 2, or 3 for the   
         department number."); 
    System.out.print("Enter Department Number: ");     
    sc.next(); 
} 
int department = (sc.nextInt()); 

回答

1

您不會考慮字符串到整數轉換或未使用newLine字符。

while (sc.hasNextLine()) { 

    int choice = Integer.parseInt(sc.nextLine().trim()); 
    if (choice == 1 || choice == 2 || choice == 3) 
     //do something 

} 
1

你的代碼應該是:

System.out.print("Enter Department Number: "); 
int department = sc.nextInt();  
while(department != 1 || department != 2 || department != 3) { 
    System.out.println("Invalid entry. Please enter 1, 2, or 3 for the   
         department number."); 
    System.out.print("Enter Department Number: ");     
    department = sc.nextInt(); 
} 
+0

如果我輸入一個非數字值,並不斷地循環,這將引發我的系統錯誤代碼如果我輸入一個數字。 –

+0

如果您想輸入String並使用Integer.parseInt()將其解析爲int,則可以使用'sc.next()'。上面的代碼只是一種方法,如果你願意的話,你可以使用'String',儘管你必須處理它們 – thegauravmahawar

0

閱讀整條生產線,並檢查它的正則表達式匹配:

int department; 

System.out.print("Enter Department Number: "); 
while (sc.hasNextLine()) { 
    String line = sc.nextLine(); 
    if (line.matches("[123]")) { 
     System.out.println("Invalid entry. Please enter 1, 2, or 3 for the department number."); 
     System.out.print("Enter Department Number: "); 
    } else { 
     department = Integer.parseInt(line); 
     break; 
    } 
} 
0

,你問下一個整數使用while循環,只當它在正確的範圍內時打破:

代碼:

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 

    int value; 
    while (true) { 
     System.out.print("Enter Department Number: "); 
     if (sc.hasNextInt()) { 
      value = sc.nextInt(); 
      if (value < 1 || value > 3) 
       System.out 
         .println("Invalid entry... must be between 1 and 3"); 
      else 
       break; 
     } 
    } 
    else 
     sc.next(); // does not block when a string is putted in 
    System.out.println(value); 
} 
0

不是很乾淨或一致的,但

int input; 
while(!sc.hasNextInt()||((input=sc.nextInt())>3&&input<1))) 
0

可以這樣進行:

Scanner sc = new Scanner(System.in); 
int departement; 

do { 
    System.out.print("Enter Department Number: "); 
    departement = sc.nextInt(); 
}while (departement != 1 && departement != 2 && departement != 3);