2d阵列结束

时间:2009-11-18 08:56:51

标签: java debugging loops

我怎么能在java中说呢

如果我到达2d数组中的行的末尾并且我在该行中只遇到0 将行设置为下一行(行++)并将列设置为0(列= 0)?

我遇到问题,我的算法进入无限循环:D

感谢

2 个答案:

答案 0 :(得分:1)

呃,听起来你想要一个基本的嵌套循环遍历你的数组...

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

这将重置您的列,无论如何。如果你想做一些狡猾和hackish的事情

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
   }
}

请注意,这似乎是算法上最不寻常的条件......我希望你不要试图破解一个肮脏的bug而不是弄清楚真正的问题是什么!

答案 1 :(得分:0)

此示例循环遍历数组,直到找到第一个非零值,并将其与坐标一起输出。

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循环就会如上所述。一行完成后(内循环),外循环递增1,内循环重新开始为零。因此,所有行都从头到尾运行。