2016-06-17 11 views
0

に文字列を入力します。私はこのような構造入力したいが、3 -を入力した後に押すが、私はエラー 入力まし入力します。2D配列

--- -m- p--

をし、私のコードは次のとおりです。 `

import java.util.Scanner; 

public class Test { 
public static void main(String[]args){ 
    Scanner in = new Scanner(System.in); 
    int n = in.nextInt(); 
    String[][] matrix = new String[n][n]; 
    for (int i=0 ; i<n ; i++){ 
     for (int j=0 ; j<n ; j++){ 
      matrix[i][j] = in.nextLine(); 
     } 
    } 

    for (int i=0 ; i<n ; i++){ 
     for (int j=0 ; j<n ; j++){ 
      System.out.println(matrix[i][j]); 
     } 
     System.out.println(); 
    } 
    } 
} 

となりました。これは次のとおりです。

Eスレッド "main"のxceptionが発生しました。 at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) Test.mainでjava.util.Scanner.nextInt(不明なソース) で (Test.java:6)

それを修正する方法と、アレイ

+1

最初に「n」の入力を受けています。最初に提供してください。 – Kaushal28

+0

@ Kaushal28私の間違いですが、出力は別のものです。 –

+0

入力ミスマッチ例外は "n" – Kaushal28

答えて

0
int n = in.nextInt(); 

に文字列を入力する方法この行は整数nに値を入力する代わりに文字列入力を入力しています。まず、整数入力をnに入力する必要があります。 (この場合は3)

+0

質問: "私はこの構造を入力したいが、3をタイプした後Enterを押すとエラーが出る。"最初のダッシュ( - )の前の3は最初の入力であると思う。それはちょうど正しくフォーマットされていません。だから私はこれが問題だとは思わない –

0

int n = in.nextInt();の後に例外がありますか? また、最初にin.nextLine()を呼び出すと、値を持たないことに注意してください。

は、このコードを試してみてください:int n = in.nextInt()

public static void main(String[]args){ 
     Scanner in = new Scanner(System.in); 
     String s = in.nextLine(); 
     int n = Integer.parseInt(s); 
     String[][] matrix = new String[n][n]; 
     for (int i=0 ; i<n ; i++){ 
      for (int j=0 ; j<n ; j++){ 
       matrix[i][j] = in.nextLine(); 
      } 
     } 

     for (int i=0 ; i<n ; i++){ 
      for (int j=0 ; j<n ; j++){ 
       System.out.println(matrix[i][j]); 
      } 
      System.out.println(); 
     } 
     } 
    } 
+0

私の間違い;私は最初に番号3を入力することを忘れていましたが、私はそれを停止しません印刷するために20以上の要素を入力する必要がありますが、私はわずか9要素を期待した。 –

0

私はあなたの問題はを使用することにあると思います。次のnextInt()、()のような関数は、と同様に消費しないため、この呼び出しを行った後、あなたは

//consume nextLine() 
in.nextLine(); 

あなたがこれをしなければならない理由を呼び出すことで、再びスキャナを使用する前に、次の行を消費しなければならないです'\ n'文字を入力するので、入力を入力した後にEnterキーを押すと、その前にすべての関数が取り込まれ、 '\ n'がそこにぶら下がっています。それがあなたのためにそれを解決することを願っています!

また、nextline()は文字単位ではなく行単位で読み取ります。

--- '\n' 
-m- '\n' 
p-- '\n' 

のような入力を入力する場合は、プログラムは動作しません。プログラムは9つの入力を期待していますが、あなたはそれを3つだけ与えています。ラインint n = in.nextInt()

//consume nextLine() 
in.nextLine(); 

:あなたは、単にこの行を追加することで整数に取った後、次の行を消費を確認した後。プログラムは、以下のように入力する入力を期待されるであろう。

3は を入力 - を入力 - を入力 - を入力 - mは を入力する入力 - を入力 - -

を入力 P を入力する入力します

その後、印刷が開始されます。それがあなたの望むものなら、良い!それ以外の場合は、解決しようとしている問題についてもっと教えてください