2016-09-04 27 views
0

ここにはいくつかの問題があります。 私はユーザーにだけ整数として入力することができますしたいです。私は多くのコードで試したが、まだ動作しません。エラーメッセージがユーザにスキャナで整数を入力させるJava

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) 

私を助けてください(初級プログラマー)として示されます場合はところで、これは私のコード

import java.util.Scanner; 

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

です。

+0

[Can not Reproduced](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(); 
    } 

入力が整数の場合、このコードは、それが、その後であれば、それは継続されます、チェックします。

+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でそれを打ち破り、ユーザーが悪い番号を入力した場合は入力をポーリングし続けます。

関連する問題