【发布时间】:2009-11-18 08:56:50
【问题描述】:
java怎么说
如果我到达二维数组中一行的末尾,并且我在该行中只遇到了 0 将行设置为下一行(行 ++)并将列设置为 0(列 = 0)?
我的算法陷入无限循环时遇到问题:D
谢谢
【问题讨论】:
-
发布您的代码以及您期望的示例输入和输出。
-
几乎不可能不向您发送整个项目,包括存储在程序外部文件中的图形
java怎么说
如果我到达二维数组中一行的末尾,并且我在该行中只遇到了 0 将行设置为下一行(行 ++)并将列设置为 0(列 = 0)?
我的算法陷入无限循环时遇到问题:D
谢谢
【问题讨论】:
呃,听起来你想要一个基本的嵌套循环来遍历你的数组......
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
}
}
请注意,这在算法上似乎是最不寻常的情况...我希望您不要试图破解一个肮脏的错误,而不是弄清楚真正的问题是什么!
【讨论】:
此示例循环遍历数组,直到找到第一个非零值并将其与坐标一起输出。
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 循环就像上面一样。一行完成(内循环)后,外循环递增一,内循环从零重新开始。因此,所有行都从头到尾贯穿。
【讨论】: