配列の全要素の値が一定の数値の時のif分の記載方法を知りたいです。
例えばこのようなソースコードの場合、
どのようにすれば全てがの値が1の時〜するというように記載できますか?
分かりやすいように配列に予め1~5までの固定の値を入れていますが、
この配列の値はランダムとします。
とりあえず、配列の中身の値が全部〜だったらという記載法を知りたいです。
int[] a = { 1, 2, 3, 4, 5 }; if(配列の中身が全部1の条件式){ }
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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総合スコア35660
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総合スコア6851
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
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総合スコア16731
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
総合スコア4791
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
総合スコア79
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
総合スコア4666
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/07 11:12
2017/09/07 11:13
2017/09/07 11:18
2017/09/07 11:21
2017/09/07 11:46
2017/09/08 06:57