我有对象DataEntry
包含行,列和值变量,我试图将新对象添加到ArrayList,除非已经有一个具有相同行和列值的对象,然后我覆盖{ {1}}现在有一个新值,我有这个:
value
没有正确设置值,我认为它与public void set(int row, int column, double val) {
DataEntry temp = new DataEntry(row, column, val);
for (int i = 0; i < data.size(); i++)
if (data.get(i).getRow() == row && data.get(i).getColumn() == column)
data.set(i, temp);
else {
data.add(temp);
}
}
感谢任何帮助
答案 0 :(得分:4)
这是因为无论i
中的data
项是否与行和列匹配,您都会继续搜索。
您应该做的是在找到匹配的i
时从方法返回,否则继续。如果循环结束而未找到匹配的索引,请将temp
添加到data
:
public void set(int row, int column, double val) {
DataEntry temp = new DataEntry(row, column, val);
for (int i = 0; i < data.size(); i++)
if (data.get(i).getRow() == row && data.get(i).getColumn() == column) {
data.set(i, temp);
return;
}
}
data.add(temp);
}
答案 1 :(得分:2)
您的代码段中有错误。 else循环应该在循环之后执行。
public void set(int row, int column, double val) {
boolean isFound = false;
DataEntry temp = new DataEntry(row, column, val);
for (int i = 0; i < data.size(); i++) {
DataEntry current = data.get(i);
if (current.getRow() == row && current.getColumn() == column){
data.set(i, temp);
isFound = true;
break;
}
}
if(!isFound) {
data.add(temp);
}
}
答案 2 :(得分:2)