2016-06-11 5 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 type и not 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(); 

будет пытаться получить целое число от чего-то, что не является «интерпретируемым в междах» , то вы получите исключение

Try подтверждения ввода до тех пор, пока пользователь не дает что-то действительное для вас работать ...

Пример:

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()); 

} 
}