・数値が入った2つの配列の内容を比較したい。
・結果、全部同じならTrue、1つでも違うものがあればFalseを導き出したい。
※出来れば、効率的な解答ではなく、初歩的な解答を希望します。
私が素人なので、まだ学んでない単語は、使えません。
引き出しの多い方頼りになりますが、よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/05 04:50
回答3件
0
読むのに挫折しそうになりましたが、要するに
- 数値が入った2つの配列の内容を比較したい。
- 結果、全部同じならTrue、1つでも違うものがあればFalseを導き出したい。
ということですか?値を入力とか、余計な説明を省けば簡潔になるので、自分が一体何に困っているのか、まずご自分で把握するところから始めてください。
で、比較ですが、おそらく何通りもやり方はあります。多分シンプルなのは
- あらかじめ「比較結果」変数を用意しておく(とりあえずTrueを入れておく)。
- for文で2つの配列の内容それぞれをif文を使って比較する(全件比較)。
- 上記2の結果を、1の変数にANDで加える。
上記の3は、論理演算を使います。論理演算ANDは
- True and True = True
- True and False = False(逆も同様)
- False and False = False
のようになる計算を行うので、1つでもFalse(不一致)があると、その後の結果は全部Falseになります。なので、上記の手順で結果がTrueになるには「配列の全部が一致する」という必要があり、おそらくお求めの答えに行き着けるかと。
もっと処理を短くするなら、不一致を発見し次第ループを中断するとかすれば処理時間は短くなりますね。
投稿2019/03/04 09:20
総合スコア534
0
ベストアンサー
このコードを研究してみてください。
java
1import java.util.Scanner; 2 3public class Mainx { 4 public static void main(String[] args) { 5 final int ARRAY_LEN = 4; 6 int[] array_a = { 1, 2, 3, 4 }; 7 int[] array_b = new int[ARRAY_LEN]; 8 Scanner scanner = new Scanner(System.in); 9 for (int i = 0; i < ARRAY_LEN; i++) { 10 System.out.println("数値を入力してください。"); 11 array_b[i] = scanner.nextInt(); 12 } 13 boolean flag = true; 14 for (int i = 0; i < ARRAY_LEN; i++) { 15 if (array_a[i] != array_b[i]) { 16 flag = false; 17 break; 18 } 19 } 20 if (flag) { 21 System.out.println("True"); 22 } else { 23 System.out.println("False"); 24 } 25 } 26}
投稿2019/03/04 14:10
総合スコア22324
0
java.util.Arrays
のequals()
を使って比較するのが手っ取り早いかと。
java
1class sample 2{ 3 public static void main(String[] args) 4 { 5 int[] a = {1, 2, 3}; 6 int[] b = {1, 2, 3}; 7 8 System.out.println(java.util.Arrays.equals(a, b)); 9 } 10}
投稿2019/03/04 09:59
総合スコア476
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。