2016-12-16 18 views
-3

私のコードを使用している間、私はそれは、端末プリントをコンパイルしたい場合ArrayIndexOutOfBoundsExceptionが二次元アレイ

Scanner sc = new Scanner(System.in); 
int v=sc.nextInt(); 
int s=sc.nextInt(); 
int[][] n = new int [v][s]; 
for (int i=0; i<n.length; i++) { 
    for (int j=0; j<n[v].length-1; j++) { 
     n[i][j]=sc.nextInt(); 
    } 
} 
System.out.print(n[v][s]); 
System.out.println(); 

ある:

java.lang.ArrayIndexOutOfBoundsException:Plevelで4
。メイン(Plevel.java:13)

誰かが間違っていることを教えていただけますか?

+1

この 'new int [v] [s]'とこの 'n [v] .length'は一緒に動作できません。配列のサイズ番号は有効なインデックスではありません。 – Tom

答えて

0
Scanner sc = new Scanner(System.in); 
    int v=sc.nextInt(); 
    int s=sc.nextInt(); 
    // V variable becomes row and S variable come column, since you already know row length and column length you can use same for looping 
    int[][] n = new int [v][s]; 

    for (int i = 0; i < v; i++) { 
     for (int j = 0; j < s; j++) { 
      n[i][j] = sc.nextInt(); 
     } 
    } 

    // If you want to print last value 
    System.out.print(n[v-1][s-1]); 

配列インデックスは0から始まります。したがって、配列サイズ3のときは、インデックス0,1,2を使用できます。

System.out.print(n[v][s]); 

配列は0からV-1までと0からSにインデックスが作成されます。あなたはインデックスとして3を使用している場合、それは、私は、エラーがここにあるとし、あなたのクエリ

1

に掲載例外がスローされますあなたは、配列3x3の、その次のように表示されている場合は-1

:ので、あなたが最後の要素を取得したい場合

v[0]s[0] v[0]s[1] v[0]s[2] 
v[1]s[0] v[1]s[1] v[1]s[2] 
v[2]s[0] v[2]s[1] v[2]s[2] 

を、次のように記述する必要があります

System.out.print(n[v-1][s-1]);