Java 这些if语句和for循环不';行不通
我有这个代码的问题 数据是一个observableArrayList,它包含一个名为table的双字符串数组。 Detritable是另一个字符串双数组,其格式与数据中的表相同。 我只在数据中没有一个表与我要添加的表相等时才尝试添加数据,但由于某些原因,只有当数据不为空时,它才会添加,并且在添加数据时,如果数据中存在一个现有表或不存在一个现有表,则会同时添加这两个表 我没有从运行这个中得到任何错误 编辑我使代码更易于阅读Java 这些if语句和for循环不';行不通,java,loops,arraylist,equals,Java,Loops,Arraylist,Equals,我有这个代码的问题 数据是一个observableArrayList,它包含一个名为table的双字符串数组。 Detritable是另一个字符串双数组,其格式与数据中的表相同。 我只在数据中没有一个表与我要添加的表相等时才尝试添加数据,但由于某些原因,只有当数据不为空时,它才会添加,并且在添加数据时,如果数据中存在一个现有表或不存在一个现有表,则会同时添加这两个表 我没有从运行这个中得到任何错误 编辑我使代码更易于阅读 for (int i = 0; i < s.length; i++)
for (int i = 0; i < s.length; i++) {
int p = data.size();
Table tempTable = new Table(Integer.parseInt(s[i][0]), s[i][1], s[i][2], s[i][3], s[i][4], s[i][5], s[i][6], s[i][7], s[i][8], s[i][9], s[i][10], s[i][11], s[i][12], s[i][13], s[i][14], s[i][15], s[i][16]);
for (int j = 0; j < p; j++){
if (!data.get(j).equals(tempTable)){
data.add(tempTable);
break;
}
}
}
for(int i=0;i
您的逻辑颠倒了:
for (int j = 0; j < p; j++){
if (!data.get(j).equals(tempTable)){
data.add(tempTable);
break;
}
}
2件事:没有缩进,缺少括号您是否为
表
类定义了等于
?不管您存储在其中的数据是什么,当您执行这样的操作时,Java只会查看equals
。结果应该是什么?不,因为我这样做会添加所有唯一的元素,但会跳过所有非唯一的元素。问题是它仍然无法比较。除了使用equals,还有其他方法吗?@Tilion不,事情不是这样的。假设data
有两个不同的元素。现在,您设置了一个attreable
,它等于data.get(0)
。我认为您的计划不是添加它,因为它等于data.get(0)
。但是,当j
为1时,!data.get(j).equals(entitable)
是true
(因为entitable
等于data.get(0)
,而不是data.get(1)
),所以原始代码会再次添加它。基本上,你的逻辑并不是在做你认为它在做的事情。是的,你是正确的。非常感谢。我们尝试只比较数组中第一个整数的值和observableArrayList中每个数组的第一个整数的值,现在可以了。非常感谢。
boolean found = false;
for (int j = 0; j < p; j++){
if (data.get(j).equals(tempTable)){
found = true;
break;
}
}
if (!found)
data.add(tempTable);