質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • Java

    13162questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    6241questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

配列の全要素の値が一定の数値の時のif分の記載方法

解決済

回答 6

投稿

  • 評価
  • クリップ 0
  • VIEW 927

Kw6ZG2sV

score 55

配列の全要素の値が一定の数値の時のif分の記載方法を知りたいです。
例えばこのようなソースコードの場合、
どのようにすれば全てがの値が1の時〜するというように記載できますか?
分かりやすいように配列に予め1~5までの固定の値を入れていますが、
この配列の値はランダムとします。
とりあえず、配列の中身の値が全部〜だったらという記載法を知りたいです。

int[] a = { 1, 2, 3, 4, 5 };


if(配列の中身が全部1の条件式){
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 6

checkベストアンサー

+2

最初の要素(例では1)だけを入れた同じ長さの配列を作って、2引数の  Arrays.equals()を使う。
参考:クラス Arrays

ちょこっと作って見ました・・・

public class JavaApplication1 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int[] a = {1, 1, 1, 1, 1};
        int[] b = new int[a.length];
        //
        Arrays.fill(b, a[0]);
        //
        if (Arrays.equals(a, b)) {
            System.out.println("EQ");
        } else {
            System.out.println("NE");
        }
    }

}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/08 15:57

    ありがとうございました!
    参考にさせていただきました!!

    キャンセル

+2

こういう静的なメソッドを用意すると良いかもしれません。

public static <T> boolean allEqual(List<T> list) {
    if(list.isEmpty()) {
        return false;
    }
    return allEqual(list, list.get(0));
}
public static <T> boolean allEqual(List<T> list, T requiredElem) {
    if(list.isEmpty()) {
        return false;
    }
    for(T elem: list) {
        if(!elem.equals(requiredElem)) {
            return false;
        }
    }
    return true;
}

Java8のstreamを使えばもうちょっと簡潔に書けそうです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/07 20:12

    コンセプトは理解できますが、
    若干、質問者様の期待するコードからはズレているように見受けます。

    質問の内容は
    「すべての値が同じとき」
    ではなく
    「全てがの値が1の時」
    ですので。

    キャンセル

  • 2017/09/07 20:13

    そうですか?
    > とりあえず、配列の中身の値が全部〜だったらという記載法を知りたいです。
    と書いてありますが。

    キャンセル

  • 2017/09/07 20:18

    レスありがとうございます。

    「~」を「同じ」と見なした、ということですね。

    後は、質問者様の判断にお任せします。

    キャンセル

  • 2017/09/07 20:21

    少し汎用的にコードを書き換えました。
    これなら、どちらの解釈でも対応できそうですね。

    キャンセル

  • 2017/09/07 20:46

    b

    キャンセル

  • 2017/09/08 15:57

    お二方の素晴らしいアイデアに驚いています。私はまだまだ初心者なのでそのようなことは思いもつきませんでした。ありがとうございました!

    キャンセル

+1

手元に Android環境がないため、JDK1.7 で動作確認しております。

public class Main {

    public static void main(String[] args) {
        int[] a = { 1, 1, 1, 1, 1 };
        if (equalsAll(a, 1)) {
            System.out.println("した。");
        } else {
            System.out.println("しなかった。");
        }

        int[] b = { 1, 1, 1, 1, 1, 2 };
        if (equalsAll(b, 1)) {
            System.out.println("した。");
        } else {
            System.out.println("しなかった。");
        }

        int[] c = {};
        if (equalsAll(c, 1)) {
            System.out.println("した。");
        } else {
            System.out.println("しなかった。");
        }

        if (equalsAll(null, 1)) {
            System.out.println("した。");
        } else {
            System.out.println("しなかった。");
        }
    }

    /**
     * 引数 a のすべての要素が引数 value と等しいかチェックする。
     * 
     * @param a
     *            比較される配列。
     * @param value
     *            比較する値。
     * @return 引数 a のすべての要素が引数 value と等しい場合、<br>
     *         および引数 a が空の配列の場合、true。<br>
     *         さもなくば false。
     * @throws NullPointerException
     *             a == null のとき。
     */
    public static boolean equalsAll(int[] a, int value) {
        if (a.length == 0) {
            return true;
        }

        for (int i : a) {
            if (i != value) {
                return false;
            }
        }
        return true;
    }
}


実行結果

した。
しなかった。
した。
Exception in thread "main" java.lang.NullPointerException
    at Main.equalsAll(Main.java:46)
    at Main.main(Main.java:25)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/08 15:55 編集

    ありがとうございました!
    とても勉強になりました!

    キャンセル

+1

別の質問でCollectionsを眺めていたときに見つけたfrequency()を使ってみます。
int[]ではないですが‥。(int[]から変換するの面倒臭そうだったので)

import java.util.*;

List a;

//「全部同じ」じゃない
a = Arrays.asList(1, 2, 3, 4, 5);
System.out.println(Collections.frequency(a, a.get(0)) == a.size());
//=> false

//「全部同じ」
a = Arrays.asList(1, 1, 1, 1, 1);
System.out.println(Collections.frequency(a, a.get(0)) == a.size());
//=> true

//「全部3」
a = Arrays.asList(3, 3, 3, 3, 3);
System.out.println(Collections.frequency(a, 3) == a.size());
//=> true

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/08 18:17

    色々な方法があるのですね!
    有益な情報感謝いたします!

    キャンセル

0

回答にないものを挙げてみます。

Integer[] array = { 1, 1, 1, 1 };

// Stream API
if (Arrays.stream(array).allMatch(i -> i == 1)) {
    System.out.println("全て1");
}

// ループなしでやってみる(無駄が多いのでやめたといた方がいい。。。)
List<Integer> list = new ArrayList<>(Arrays.asList(array));
list.removeAll(Arrays.asList(Integer.valueOf(1)));
if (list.isEmpty()) {
    System.out.println("全て1");
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/07 22:35

    失礼しました。Androidでしたか。
    AndroidではStream APIは使えませんね。。。

    となると、みなさんの回答してる方法が、無駄がなく速度的にもいいと思います。

    キャンセル

0

class test{
    public static void main(String[] args){
        int[] a=new int[]{1,1,1,1,1};

        boolean frag=true;

        for (int t : a){
            if (t!=1){
                frag=false;
                break;
            }
        }

        if (frag){
            //ここに処理を書き込む。
        }
    } 
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/08 16:47

    ありがとうございます。大変勉強になります。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    13162questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    6241questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。