2

int[]配列全体のすべての要素がゼロでないかどうかをプログラムでチェックしたいと考えています。

私が現在持っているもの:

for(int i=0; i<myArray.length; i++)
{
  if(myArray[i] == 0)
  {
    completed = false;
  }
  else
  {
    completed = true;
  }
}

else statementただし、中央の 1 つの配列のみが非ゼロであり、残りの配列をチェックしない場合、ループは実行を続けます。

4

5 に答える 5

4

0 を見つけたら、for ループから抜け出す必要があります。

if(myArray[i] == 0)
  {
    completed = false;
    break;
  }

このようにして、後で 0 以外の要素を見つけた場合に、誤って completed を true に戻すことはありません。

于 2012-12-23T06:49:01.223 に答える
2

次のようにステートメントを使用してbreak、ゼロ値が最初に出現したときにループを中断できます。

  boolean completed = true;
  for(int i=0; i<myArray.length; i++) {
    if(myArray[i] == 0) {
       completed = false;
       break;
     }   
  }

 if(!completed){
     //array has zero values
 }

その他の重要なポイント:

  1. Arrays.binarySearch():ソートされた配列でのみ機能するため、この場合は役に立ちません。

    二分探索アルゴリズムを使用して、指定されたバイト配列から指定された値を検索します。この呼び出しを行う前に、配列を (sort(byte[]) メソッドで) ソートする必要があります。ソートされていない場合、結果は未定義です。指定された値を持つ複数の要素が配列に含まれている場合、どれが見つかるかは保証されません。

  2. indexOfメソッドは内部的に同じループと比較を行います。したがって、元のパターンと新しい構文に大きな違いはありません。コードがコンパクトに見えるかもしれませんが。

于 2012-12-23T06:50:53.783 に答える
0

最初の 0 要素を見つけた後にステートメントを配置break;すると、ループから飛び出すことができます。

于 2012-12-23T06:50:12.070 に答える
0

各要素をループする必要はありません: JSBIN Demo

IndexOf(); を使用します。

var myArray = [1,2,1,3];
var completed = myArray.indexOf(0) != -1
于 2012-12-23T06:53:57.280 に答える
-1

または、次のことができます

var completed = true;
for(int i=0; i<myArray.length; i++)
{
   if(myArray[i] == 0)
   {
       completed = false;
   }
}

どちらも同じことをします。

于 2012-12-23T06:52:57.393 に答える