前提・実現したいこと
以下の例を実現させたいのですが、どちらか入ってる数とその値を小さい順に並べる方法がわかりません。
例
配列1: 4 9 4 3 6 8 7 1 3 10
配列2: 7 3 10 7 5 9 4 9 9 1
共通の数:1 3 4 7 9 10
どちらかに入っている数:1 3 4 5 6 7 8 9 10
発生している問題・エラーメッセージ
どちらか片方に入ってる値になってしまう、小さい順に表示されない
該当のソースコード
java
1public class Problem8_11 { 2 /** 3 * メインメソッド メイン処理を実行します。 4 * 5 * @param args 6 * プログラム起動引数 7 */ 8 public static void main(String[] args) { 9 // 初期値を設定 10 int num1[] = new int[10]; 11 int num2[] = new int[10]; 12 int same[] = new int[10]; 13 int side[] = new int[10]; 14 15 random(num1); 16 random(num2); 17 18 int n = 0, m = 0; 19 // forループ 20 for (int i = 0; i < 10; i++) { 21 // same,side判定 22 if (find(num2, num1[i])) { 23 n = add(same, n, num1[i]); 24 } else { 25 m = add(side, m, num1[i]); 26 } 27 } 28 // forループ 29 for (int i = 0; i < 10; i++) { 30 31 // side判定 32 if (!find(num1, num2[i])) { 33 m = add(side, m, num2[i]); 34 } 35 } 36 // 文字列を表示 37 System.out.print("配列1:"); 38 print(num1, 10); 39 System.out.print("配列2:"); 40 print(num2, 10); 41 System.out.print("共通の数:"); 42 print(same, n); 43 System.out.print("どちらかの数:"); 44 print(side, m); 45 } 46 47 /** 48 * 配列の表示 49 */ 50 public static void print(int[] a, int n) { 51 // forループ 52 for (int i = 0; i < n; i++) { 53 System.out.print(" " + a[i]); 54 55 } 56 57 System.out.println(); 58 } 59 60 /** 61 * 乱数を設定 62 */ 63 public static void random(int[] a) { 64 // forループ 65 for (int i = 0; i < 10; i++) { 66 // 乱数設定 67 a[i] = (int) (Math.random() * 10) + 1; 68 } 69 } 70 71 /** 72 * 結果処理判定 73 */ 74 public static boolean find(int[] a, int e) { 75 // forループ 76 for (int i = 0; i < 10; i++) { 77 if (a[i] == e) { 78 return true; 79 } 80 } 81 return false; 82 } 83 84 /** 85 * 配列に追加する 86 */ 87 public static int add(int[] a, int n, int e) { 88 // forループ 89 for (int i = 0; i < n; i++) { 90 if (a[i] == e) { 91 return n; 92 } 93 } 94 a[n] = e; 95 return n + 1; 96 } 97}
質問者さんの過去の質問(https://teratail.com/questions/278362)ではベストアンサーを選ばれていますが、それでは解決しなかったということでしょうか。
ご返信ありがとうございます。
はい、私が問題の意味を履き違えていて再度質問をさせていただきました。
先の質問でベストアンサーの回答にあったHashSetを使うのが現実的な解だと思いますが、それを使わずにifで実現しなければいけない理由でもあるのでしょうか。学校か何かの課題ですか?
問題の意味を履き違えており、再度質問させていただきました。
以前の回答はどちらかに表示されているものでしたが、問題はどちらかに値が入っていれば表示するというものだったので再度質問させていただきました。
回答1件
あなたの回答
tips
プレビュー