2016-12-16 3 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: 4
на плевелах. main (Plevel.java:13)

Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?

+1

Этот 'новый 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. Если вы используете 3 в качестве индекса, то он будет бросать исключение, которое вы размещены на запросе

1

Я предполагаю, что ошибка здесь:

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

массив индексируется от 0 до V-1 и от 0 до х -1

, если у вас есть 3x3 массив, его отображаемый как это:

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]); 
Смежные вопросы