Java中的死代码错误

时间:2014-02-25 18:13:26

标签: java dead-code

我有一个对象数组。我想要扫描它,只要我找到的对象不为空,就将计数器增加1.当我找到第一个空对象时,我想要从for循环开始,因为没有理由继续循环。

我写了以下代码:

// counter variable initialized to zero
int counter = 0;

// scan the array
for(int i = 0; i < this.array.length; i++) {

    // as long as the object found is not null
    while(!this.array[i].equals(null)) {

        // increase the value of the counter by 1
        counter += 1;

    }

    // when the first null object found, jump out of the loop
    break;

}

for循环中的i ++已标记,警告为Dead Code。但是,我想这是有道理的,因为当我找到第一个空对象时,我停止循环。所以没什么可担心的,或者......?

3 个答案:

答案 0 :(得分:5)

在<{1}}循环的第一次迭代结束时,你无条件突破for循环。这与“当找到第一个空对象时”无关 - 它只是在循环体的末尾。

此外,您的for循环永远不会完成,除非while确实为空(在这种情况下它会抛出array[i])。我想你想要:

NullPointerException

或者更好,使用迭代器:

for (int i = 0; i < this.array.length; i++) {
    if (array[i] != null) {
        counter++;
    } else {
        break;
    }    
}

答案 1 :(得分:0)

将while迭代更改为if条件为一次,当条件为真时,它将不会中断并进入无限循环。要符合您的要求,请使用以下代码

if(this.array[i] != null) {
    // increase the value of the counter by 1
    counter += 1;
}
else {
    break;
}

答案 2 :(得分:0)

最简单的解决方案是:

int counter = 0;
for (Object item : array) {
  if (item == null) {
    break;
  }
  ++counter;
}