2013-12-17 3 views
2

Хорошо, поэтому им сказали, что есть небольшая логическая ошибка с моим внутренним циклом. очевидно, если бы у моего массива [2] [2] было 2X3 элементов или 3X2 элементов, он бы не работал, может кто-нибудь сказать мне, как исправить эту небольшую проблему?логическая ошибка с for для цикла в массиве

public static void dispArr(String [][] country){ 
    for(int i= 0; i<country.length; i++){ // both for loops count from 0 to 1 which are the only numbers required for this given array 
     for(int j= 0; j<country.length; j++){ 
      System.out.print(country[i][j]); //this will output [0][0],[0][1],[1][0] and[1][1] as identified above. 
     } 

     System.out.println("\n"); //create space between both 
    } 
} 
+0

Попробуйте 'country [i] .length' во внутренней петле –

+0

Спасибо вам всем! – user3111329

ответ

8

Изменить его:

for (int i = 0; i < country.length; i++) { 

        // note the change here 
    for (int j = 0; j < country[i].length; j++) { 
     // ... 
    } 
} 

В противном случае, внутренний цикл не будет считать до столько, сколько это необходимо.

Для простого примера, если у вас это:

[[1, 2, 3], [4, 5, 6]] 

Это стало бы (с исходным кодом):

for (int i = 0; i < 2; i++) { 

       // oh no! not counting far enough 
    for (int j = 0; j < 2; j++) { 
     // ... 
    } 
} 

Вы должны принять длина внутреннего массива вы 're looping over, а не количество внутренних массивов, если это имеет смысл для вас.

0

country.length дает только первое измерение. country[i].length даст вам второе измерение.

+0

'country.length [i]' ??? Да ??? – Doorknob

+0

глупое правописание ошибка – Dom

0

Ваши внутренние итерации цикла за первое измерение в матрице, и, вероятно, следует

for (int j=0; j < country[i].length; j++) { ... 

вместо этого. Обратите внимание на [i] после country.

Приветствия,

2

В Java 2 двумерный массив по существу является массивом массивов. Следовательно, необходимо поместить индекс первого измерения (массив) при подсчете второго.

public static void dispArr(String [][] country){ 
    for(int i= 0; i<country.length; i++){ // both for loops count from 0 to 1 which are the only numbers required for this given array 

     for(int j= 0; j<country[i].length; j++){ 

      System.out.print(country[i][j]); //this will output [0][0],[0][1],[1][0] and[1][1] as identified above. 
     } 

     System.out.println("\n"); //create space between both 
    } 
} 
Смежные вопросы