这些if语句和for循环不起作用

时间:2014-12-09 16:22:07

标签: java loops arraylist equals

我对此代码有这个问题。

data是一个observableArrayList,它包含一个名为table的双字符串数组。 tempTable是另一个字符串的双重阵列,其格式与数据中的表格相同。 我试图将tempTable添加到数据只有在数据中还没有一个表等于我想要添加的表但是由于某种原因它只会添加,如果数据不是空的,当它添加它时添加两者如果有是现有表格,或者数据中是否存在现有表格。

我没有遇到任何错误。

编辑我让代码更容易阅读

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;
    }
  }
}

1 个答案:

答案 0 :(得分:0)

你的逻辑倒退了:

for (int j = 0; j < p; j++){
  if (!data.get(j).equals(tempTable)){
    data.add(tempTable);
    break;
  }
}

如果tempTable中的任何元素不等于data,则会添加tempTable。只有在所有元素不相等时才想添加它:

boolean found = false;
for (int j = 0; j < p; j++){
  if (data.get(j).equals(tempTable)){
    found = true;
    break;
  }
}
if (!found)
  data.add(tempTable);