• ベストアンサー

java 判定ロジックについて教えてください。

配列の全ての値が"1"であることを判定するにはどのように書いたらよいでしょうか? loopで件数分まわして、値が"1"である数を数えて、 その件数が、配列の数と一致しているかどうか見る必要があるでしょうか? 一般的には、どのように書いたら、簡単にかけるか知りたいです。 基本的な質問で申し訳ないですが、ご回答お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 俺はいつも下記のようにします。  int i = 0;  for (; i < myArray.size(); i++ ) {   if ( ((String)myArray.get(i)).equals("1") ) break;  }  if ( i == myArray.size() ) {   // 全部1  } else {   // そうでない  }  カウンターを作って全件ループし、条件にマッチしない値が配列にあればその時点でループを抜けます。  全件が条件にマッチしている場合はカウンターの値と配列の数が一致します。  そうでない場合は、カウンターの値は配列の数より小さくなります。  全件一致する場合に処理時間が最大となってしまいますが、処理時間が O(n) ですから、まぁ、よしとしてます。

その他の回答 (2)

回答No.3

>loopで件数分まわして、値が"1"である数を数えて、 その件数が、配列の数と一致しているかどうか見る必要があるでしょうか? まあ、そんなところですが、 「全ての値が"1"であることを判定」 する場合は、1でない数字が現れたら偽であることが確定するので、その時点でループを抜けるのが経済的なやりかたでしょう。 boolean b = true; for (i=0; j<val.length; i++){ if (val[i] != 1){ b = false; break; } }

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

こんな感じで。 boolean all1(int[] x) {  for(int i=0; i<x.length; i++) {   if (x[i] != 1) {    return false;   }  }  return true; }

関連するQ&A

専門家に質問してみよう