- ベストアンサー
java 判定ロジックについて教えてください。
配列の全ての値が"1"であることを判定するにはどのように書いたらよいでしょうか? loopで件数分まわして、値が"1"である数を数えて、 その件数が、配列の数と一致しているかどうか見る必要があるでしょうか? 一般的には、どのように書いたら、簡単にかけるか知りたいです。 基本的な質問で申し訳ないですが、ご回答お願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
俺はいつも下記のようにします。 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)
- water-cooled
- ベストアンサー率14% (76/538)
>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)
こんな感じで。 boolean all1(int[] x) { for(int i=0; i<x.length; i++) { if (x[i] != 1) { return false; } } return true; }