0

私はオブジェクトの配列を持っています。それをスキャンして、見つかったオブジェクトが null でない限り、カウンターを 1 増やします。最初の null オブジェクトを見つけたら、ループを続行する理由がないため、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 です。ただし、最初の null オブジェクトを見つけたときにループを停止するので、これは理にかなっていると思います。何も心配する必要はありませんか、それとも...?

4

3 に答える 3

5

ループの最初の繰り返しの最後で、無条件に for ループから抜け出していますfor。これは、「最初の null オブジェクトが見つかったとき」とは関係ありません。ループの本体の最後にあるだけです。

さらに、実際に nullwhileでない限り、ループが終了することはありませんarray[i](その場合は がスローされますNullPointerException)。私はあなたが欲しいと思います:

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

または、イテレータを使用します。

int counter = 0;
for (String item : array) { // Or whatever the type should be
    if (item != null) {
        counter++;
    } else {
        break;
    }
}
于 2014-02-25T18:15:56.820 に答える
0

これに対する最も簡単な解決策は次のとおりです。

int counter = 0;
for (Object item : array) {
  if (item == null) {
    break;
  }
  ++counter;
}
于 2014-02-25T18:21:30.357 に答える