2016-06-11 13 views
0
Scanner in = new Scanner(System.in); 
int menuItem; 
do{ 
    System.out.println("Choose menu item 1,2,3,4,5: "); 
    menuItem = in.nextInt(); 
    }while(menuItem >5); 
    //i tried to use this 
    //while(menuItem >5 || !in.hasNextInt());---> but doesnt work 

它顯示線程如何做補充檢查字符串,而

異常「主要」 java.util.InputMismatchException

在這段代碼我想驗證menu item not string typenot more than 5並重複選擇項目菜單如果輸入不是字符串類型和不超過5

但我不知道如何驗證在如果它的字符串。

回答

0

正如ΦXoce웃Пepeúpa,外給予回答,而如果用戶輸入不超過5
請試試這個循環將無限運行:
1.這如果是字符串,將驗證號碼並要求用戶輸入有效號碼
2.如果正確,重複chhose菜單項。

package Sample; 

import java.util.ArrayList; 
import java.util.Scanner; 

public class tets 
{ 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     int menuItem = 0; 
     do { 
      System.out.println("Choose menu item 1,2,3,4,5: "); 
      try 
      { 
       menuItem = Integer.parseInt(in.nextLine()); 
      } 
      catch (NumberFormatException e) 
      { 
       System.out.println("Wrong input, Please enter again"); 
       menuItem=0; 
      } 
     } while (menuItem <= 5 && menuItem >=0); 
     System.out.println("You have entered no > 5 OR no < 0"); 
     System.out.println("EXIT"); 
     } 

} 

OUTPUT: 
Choose menu item 1,2,3,4,5: 
2 
Choose menu item 1,2,3,4,5: 
4 
Choose menu item 1,2,3,4,5: 
A 
Wrong input, Please enter again 
Choose menu item 1,2,3,4,5: 
-1 
Choose menu item 1,2,3,4,5: 
6 
You have entered no > 5 OR no < 0 
EXIT 
+0

@ nadya Carissa你應該接受答案,如果它可以幫助你。 – PVR

+0

@謝謝你它的作品就好你是我的英雄:) –

+0

:-)不客氣... !! – PVR

2

你需要你嘗試用它來工作之前,驗證輸入,也沒有保修,用戶給出作爲輸入一個整數,甚至不是一個數字,如果像somethig接下來會發生這樣的位置:

menuItem = in.nextInt(); 

將嘗試從一些整數,是不是「可解析爲INT」 ,那麼你將得到一個異常

嘗試驗證輸入,直到用戶提供了一些有效的爲您的工作...

Exa mple:

public static void main(String[] args) { 
Scanner in = new Scanner(System.in); 
int menuItem = -1; 
do { 
    System.out.println("Choose menu item 1,2,3,4,5: "); 
    while (menuItem == -1) { 
    try { 
     menuItem = Integer.parseInt(in.nextLine()); 
    } catch (NumberFormatException e) { 
     System.out.println("Wrong input"); 
    } 
    } 
} while (menuItem > 5); 
} 
+0

不客氣! –

0

試試這個:

import java.util.*; 

public class input_mismatch{ 
    public static void main(String[] args) { 
Scanner in = new Scanner(System.in); 
int menuItem; 
do{ 
    System.out.println("Choose menu item 1,2,3,4,5: "); 
    menuItem = in.nextInt(); 
    }while(menuItem >5 || in.hasNextInt()); 

} 
}