2016-09-09 3 views
0

Как распечатать массив, идущий вверх по столбцам, начиная с последнего столбца и последней строки, и обращаясь назад к первому столбцу и строке. Я получаю исключение OutOfBoundsException. Я считаю, что проблема связана с моей внутренней петлей.Многомерный массив

Он должен выглядеть следующим образом 89, 66, 21, 90, 54, и т.д ....

 {33, 92, 54}, 
     {22, 43, 90}, 
     {26, 85, 21}, 
     {75, 14, 66}, 
     { 8, 49, 89} 

    }; 
    for(col=2; col<stuff.length; col++) 
    { 
     for(row=4; row<stuff.length; row--) 
     { 
      System.out.print(stuff[row][col] + ","); 
     } 
     System.out.println(); 
    } 
+0

Пожалуйста, добавьте тега языка –

ответ

0

Я считаю, что вы, возможно, есть две проблемы. Во-первых, ваш первый цикл начинается с 2, а затем переходит к подсчету. Это означает, что он будет печатать только последнюю строку. Я считаю, вам нужно изменить col++ на col--, а также сменить его с col<stuff.length на col>=0. Второй for требует аналогичного изменения от row<stuff.length до row>=0. IndexOutOfBounds будет поступать из внутреннего цикла, введя бесконечный цикл, подсчитывающий вниз, что в конечном итоге заставит его попытаться получить доступ к вашему массиву с отрицательным значением.

+0

Спасибо, что работали! Однако я хотел бы сохранить свойство .length – JMillz

+0

, затем использовать его в объявлении или 'row' и' col' с декрементом 1: 'col = stuff [0] .length - 1' и' row = stuff.length - 1 –

+0

спасибо за помощь, которая сработала !!! – JMillz

0

1) Ваш цикл начинается на седловине 2 и подсчитывает, что означает только последний столбец будет печататься

2) Вы должны изменить внешний счетчик цикла, чтобы остановить, когда он меньше, чем 0, так что бесконечный цикл не является причиной

3) Вы должны сделать то же самое для внутреннего контура и убедитесь, что он рассчитывает до 0, и останавливает

это должно сделать это.

0

Предполагая, что это ваш двухмерный массив. stuff.length всегда будет возвращать никакие строки, чтобы их не было. столбцов вам нужно сделать вещи [0] .length

Решение указанной проблемы здесь:

public static void main(String args[]){ 
     int A[][] = {{33,92,54}, 
       {22,43,90}, 
       {26,85,21}, 
       {75,14,66}, 
       {8,49,89}}; 
     int rowCount = A.length; 
     int colCount = A[0].length; 

     System.out.println("rows:"+rowCount); 
     System.out.println("cols:"+colCount); 
     for(int j= colCount-1; j>=0;j--){ 
      for (int i = rowCount-1;i>=0;i--){ 
       System.out.print(A[i][j] +","); 
      } 

     } 

    } 
Смежные вопросы