2016-09-04 2 views
0

У меня есть некоторые проблемы здесь. Я хочу, чтобы пользователь мог вводить только целое число. Я пробовал много кода, но все равно не работает. Кстати, это мой кодСделать пользователем только целое число ввода в сканере Java

import java.util.Scanner; 

public class test { 
    public static void main (String []args){ 
    Scanner scan = new Scanner(System.in); 
    int number = scan.nextInt(); 
    } 
} 

Когда ошибка, сообщение будет показано, как

Exception in thread "main" java.util.InputMismatchException 
at java.util.Scanner.throwFor(Unknown Source) 
at java.util.Scanner.next(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at test.main(test.java:6) 

Пожалуйста, помогите мне (начальный программист);

+0

[Can not reproduce] (http://ideone.com/IogIpV) –

+0

Меня тоже нет. java -version? – Sridhar

ответ

1
public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    while (!scan.hasNextInt()) { 
     System.out.println("Input is not a number."); 
     scan.nextLine(); 
    } 
    int number = scan.nextInt(); 
    } 

Этот код будет проверять, если входной является Integer, если после этого он будет продолжаться.

+0

Хорошо, спасибо .. Он работает, поэтому я могу позволить пользователю вводить только целочисленные типы данных ... –

0

Попробуйте это:

public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     while (true) { 
      System.out.print("Enter a number -> "); 
      String input = sc.next(); 
      int intInputValue = 0; 
      try { 
       intInputValue = Integer.parseInt(input); 
       break; 
      } catch (NumberFormatException ne) { 
       System.out.println("This is not a number"); 
      } 
     } 
    } 

Эта программа завершится, когда пользователь вводит значение целое ввода.

Выход

enter image description here

0

Такая ошибка возникает, только если пользователь не ввел integer.For такой ситуации, вы можете создать try-catch блок, который ловит исключение, например:

String input = sc.next(); 
int number = 0; 
try { 
    number = Integer.valueOf(input); 
} catch (NumberFormatException ne) { 
    System.out.println("Invalid input!"); 
} 

Для оптимизации решения даже больше, поместите это все в цикл и вырвайтесь из него в try-block и продолжайте опрос для ввода, если пользователь вводит плохой номер.