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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Java

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

Android

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

Q&A

解決済

6回答

10963閲覧

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

po_tato

総合スコア97

Java

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

Android

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

0グッド

0クリップ

投稿2017/09/07 10:06

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

int[] a = { 1, 2, 3, 4, 5 }; if(配列の中身が全部1の条件式){ }

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

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

Java

1public static <T> boolean allEqual(List<T> list) { 2 if(list.isEmpty()) { 3 return false; 4 } 5 return allEqual(list, list.get(0)); 6} 7public static <T> boolean allEqual(List<T> list, T requiredElem) { 8 if(list.isEmpty()) { 9 return false; 10 } 11 for(T elem: list) { 12 if(!elem.equals(requiredElem)) { 13 return false; 14 } 15 } 16 return true; 17}

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

投稿2017/09/07 10:30

編集2017/09/07 11:20
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KiyoshiMotoki

2017/09/07 11:12

コンセプトは理解できますが、 若干、質問者様の期待するコードからはズレているように見受けます。 質問の内容は 「すべての値が同じとき」 ではなく 「全てがの値が1の時」 ですので。
LouiS0616

2017/09/07 11:13

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

2017/09/07 11:18

レスありがとうございます。 「~」を「同じ」と見なした、ということですね。 後は、質問者様の判断にお任せします。
LouiS0616

2017/09/07 11:21

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

2017/09/08 06:57

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

0

ベストアンサー

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

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

java

1public class JavaApplication1 { 2 3 /** 4 * @param args the command line arguments 5 */ 6 public static void main(String[] args) { 7 // TODO code application logic here 8 int[] a = {1, 1, 1, 1, 1}; 9 int[] b = new int[a.length]; 10 // 11 Arrays.fill(b, a[0]); 12 // 13 if (Arrays.equals(a, b)) { 14 System.out.println("EQ"); 15 } else { 16 System.out.println("NE"); 17 } 18 } 19 20} 21

投稿2017/09/07 10:29

編集2017/09/07 13:46
cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

po_tato

2017/09/08 06:57

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

0

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

java

1import java.util.*; 2 3List a; 4 5//「全部同じ」じゃない 6a = Arrays.asList(1, 2, 3, 4, 5); 7System.out.println(Collections.frequency(a, a.get(0)) == a.size()); 8//=> false 9 10//「全部同じ」 11a = Arrays.asList(1, 1, 1, 1, 1); 12System.out.println(Collections.frequency(a, a.get(0)) == a.size()); 13//=> true 14 15//「全部3」 16a = Arrays.asList(3, 3, 3, 3, 3); 17System.out.println(Collections.frequency(a, 3) == a.size()); 18//=> true

投稿2017/09/08 09:06

編集2017/09/08 09:12
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

po_tato

2017/09/08 09:17

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

0

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

java

1public class Main { 2 3 public static void main(String[] args) { 4 int[] a = { 1, 1, 1, 1, 1 }; 5 if (equalsAll(a, 1)) { 6 System.out.println("した。"); 7 } else { 8 System.out.println("しなかった。"); 9 } 10 11 int[] b = { 1, 1, 1, 1, 1, 2 }; 12 if (equalsAll(b, 1)) { 13 System.out.println("した。"); 14 } else { 15 System.out.println("しなかった。"); 16 } 17 18 int[] c = {}; 19 if (equalsAll(c, 1)) { 20 System.out.println("した。"); 21 } else { 22 System.out.println("しなかった。"); 23 } 24 25 if (equalsAll(null, 1)) { 26 System.out.println("した。"); 27 } else { 28 System.out.println("しなかった。"); 29 } 30 } 31 32 /** 33 * 引数 a のすべての要素が引数 value と等しいかチェックする。 34 * 35 * @param a 36 * 比較される配列。 37 * @param value 38 * 比較する値。 39 * @return 引数 a のすべての要素が引数 value と等しい場合、<br> 40 * および引数 a が空の配列の場合、true。<br> 41 * さもなくば false。 42 * @throws NullPointerException 43 * a == null のとき。 44 */ 45 public static boolean equalsAll(int[] a, int value) { 46 if (a.length == 0) { 47 return true; 48 } 49 50 for (int i : a) { 51 if (i != value) { 52 return false; 53 } 54 } 55 return true; 56 } 57}

実行結果

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

投稿2017/09/07 12:02

KiyoshiMotoki

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

po_tato

2017/09/08 06:55 編集

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

0

java

1class test{ 2 public static void main(String[] args){ 3 int[] a=new int[]{1,1,1,1,1}; 4 5 boolean frag=true; 6 7 for (int t : a){ 8 if (t!=1){ 9 frag=false; 10 break; 11 } 12 } 13 14 if (frag){ 15 //ここに処理を書き込む。 16 } 17 } 18}

投稿2017/09/08 07:34

FoolHotari

総合スコア79

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

po_tato

2017/09/08 07:47

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

0

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

Java

1Integer[] array = { 1, 1, 1, 1 }; 2 3// Stream API 4if (Arrays.stream(array).allMatch(i -> i == 1)) { 5 System.out.println("全て1"); 6} 7 8// ループなしでやってみる(無駄が多いのでやめたといた方がいい。。。) 9List<Integer> list = new ArrayList<>(Arrays.asList(array)); 10list.removeAll(Arrays.asList(Integer.valueOf(1))); 11if (list.isEmpty()) { 12 System.out.println("全て1"); 13}

投稿2017/09/07 13:32

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

root_jp

2017/09/07 13:35

失礼しました。Androidでしたか。 AndroidではStream APIは使えませんね。。。 となると、みなさんの回答してる方法が、無駄がなく速度的にもいいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問