2017-06-29 8 views
0

NumberFormatExceptionを取得しています。私はここで間違って何をしていますか? スペースで区切られた整数の配列を読み込もうとしています。 同じことを行う他の方法がありますか?私は多くの研究を行い、ほとんどの人はsplit()がStringTokenizerとBufferedReaderより優れていると言っています。コード更新このコードを実行することができません。 NumberFormatExceptionをスローしています。

public static void main (String args[]) 
    { 
    @SuppressWarnings("resource") 
    Scanner io = new Scanner(System.in); 
    int a=io.nextInt(); 
    String input; 

    for(int i=0; i<a; i++) 
    { 
     input = io.nextLine(); 
     int x= input.length(); 
     String[] splitArr = input.split("\\s+"); 
     int p[]= new int[x]; 
     int q=0; 
     for (String par : splitArr) { 
      p[q++] = Integer.parseInt(par);} 

      System.out.println(p); 
     } 
    } 

    } 

、今取り組んで:

public static void main (String args[]) 
    { 
    @SuppressWarnings("resource") 
    Scanner io = new Scanner(System.in); 
    int a=io.nextInt(); 
    io.nextLine(); 
    String input; 


    for(int i=0; i<a; i++) 
    { 
     int x= io.nextInt(); //size of array 
     io.nextLine(); 
     input = io.nextLine(); 
     String[] splitArr = input.split("\\s+"); 
     int p[]= new int[x]; 
     int q=0; 
     for (String par : splitArr) { 
      p[q++] = Integer.parseInt(par);} 
     for(int m=0; m<x; m++) 
      System.out.print(p[m]+" "); 
     } 
    } 

    } 
+1

のようなものをやってみてください。 – Lemonov

+0

@Lemonovそれを修正するには?ユーザーが入力する整数の配列は文字列になりますので、それをどのように変更できますか? –

+0

あなたの入力文字列を見ることができないので、私たちが本当に助けてくれるのか分かりません。 'System.out.println(par)'を解析する直前に 'System.out.println(par)'を実行してください。エラーが出ている文字列だけを見ることができます。または、デバッガで見てください。 – ajb

答えて

1

は(ちょうどあなたが利用したいと思います任意の文字列を入力する前に)int a=io.nextInt();io.nextLine();(どこでもそれを保存せず)を行います。

適切な値を得るためにあなたの配列によって

Scanner io = new Scanner(System.in); 
    int a=io.nextInt(); 
    io.nextLine(); 
    String input; 

ループのようなもの。ないSystem.out.prinltn(p);

+0

これは助けになりました!私は今例外を取得していないが、解析された配列は他の値を投げている。 入力 - 1 4 23 出力 - [I @ 1f96302 –

+0

あなたは 'input'を何に印刷していますか教えてください。 –

+0

警告を抑止する!=エラー処理 – Lemonov

-1

あなたが解析しようとしている入力部が整数ではありません。この

while(io.hasNext()){ 
     try{ 
      somevar = io.nextInt() 
     } 
     catch (NumberFormatException e){ 
      //just pass through this non int value or do some error handlin 
     } 
    } 
関連する問題