我怎么能在java中说呢
如果我到达2d数组中的行的末尾并且我在该行中只遇到0 将行设置为下一行(行++)并将列设置为0(列= 0)?
我遇到问题,我的算法进入无限循环:D
感谢
答案 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,内循环重新开始为零。因此,所有行都从头到尾运行。