Конец двухмерного массива - PullRequest
0 голосов
/ 18 ноября 2009

как я могу сказать в Java

если я доберусь до конца строки в 2d массиве и встретил только 0 в этой строке установить следующую строку (row ++) и установить для столбца 0 (column = 0)?

У меня возникают проблемы, когда мой алгоритм входит в бесконечный цикл: D

спасибо

Ответы [ 2 ]

1 голос
/ 18 ноября 2009

эээ, звучит так, будто вы хотите, чтобы базовый вложенный цикл повторялся по вашему массиву ...

for(int i=0; i<rows.length; i++)
   for(int j=0; j<columns.length; j++)

Это сбросит ваши столбцы независимо. Если вы хотите сделать что-то хитрое и хакерское

int sum =0;
for(int i=0; i<rows.length; i++)
{
  sum+= rows[i];
  if(i == rows.length-1 && sum == 0)
  {
     i=i+1
  } 
   for(int j=0; j<columns.length; j++)
   {
     //whatever else you want here
   }
}

Обратите внимание, что это выглядит как наиболее необычное условие алгоритмически ... Я надеюсь, что вы не пытаетесь разобраться с грязной ошибкой, вместо того, чтобы выяснить, в чем настоящая проблема!

0 голосов
/ 18 ноября 2009

Этот образец проходит по массиву до тех пор, пока не будет найдено первое ненулевое значение, и выдает его вместе с координатами.

int[][] x = new int[column][row];
boolean allzero = true;

for(int i=0;i<row;i++) {
  for(int j=0;j<column;j++) {
    allzero = (x[j][i]==0) && allzero;
    if(!allzero) {
      //what do we want to do when we encounter a non zero value?
      System.out.println("Found "+x[j][i]+" at row: "+i+" column: "+j);
      break;
    }
  }
  if(!allzero) {
    //what do we want to do when we encountered a non zero value?
    break;
  }
}

На самом деле я не понимаю, что вы имеете в виду под

установить для столбца значение 0 (столбец = 0)

Если вы просто хотите продолжить цикл по массиву, это сделают два вложенных цикла for, как указано выше. После завершения одной строки (внутренний цикл) внешний цикл увеличивается на единицу, а внутренний цикл перезапускается с нуля. Таким образом, все строки проходят от начала до конца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...