所以我正在制作一个Grid类。这是我的setCells方法:
public boolean setCells(int rows[], int cols[], int vals[]) {
if (rows.length == cols.length && cols.length == vals.length && vals.length == rows.length) {
for (int i = 0; i < rows.length; i++) {
for (int j = 0; j < cols.length; j++) {
for (int k = 0; k < vals.length; k++) {
setValue(rows[i], cols[j], vals[k]);
}
}
}
return true;
}
return false;
}
这是我的客户代码:
public static void main(String[] args)
{
int rows[] = {1,2};
int columns[] = {1,2};
int values[] = {1,2};
Grid grid1 = new Grid(5, 7);
Grid grid2 = new Grid(8);
grid1.displayGrid();
grid2.displayGrid();
System.out.println(grid1.isEmpty());
grid1.setCells(rows, columns, values);
grid1.displayGrid();
现在每当我使用带有一个元素的数组时,该方法都可以正常工作。但是,当数组有多个元素时,它会将四个单元格设置为该值而不是一个。像这样:
0 0 0 0 0 0 0
0 2 2 0 0 0 0
0 2 2 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
它应该是这样的:
0 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 2 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
有人可以帮我吗?
答案 0 :(得分:0)
您当前的算法有三个嵌套循环,这意味着它会尝试将每个可能的行和列组合设置为每个列出的值,而不是简单地根据需要设置每个单元格一次。您只需要一个循环就可以将变量跟踪索引迭代到所有三个数组中:
if (rows.length == cols.length && cols.length == vals.length) {
for (int i = 0; i < rows.length; i++) {
setValue(rows[i], cols[i], vals[i]);
}
}
此外,如果您已经知道行和列具有相同的长度,并且cols和val具有相同的长度,则不需要第三次检查(行和val具有相同的长度)。我已经在之前的示例代码段中删除了它。