回答編集履歴

4

bit を使用しないコードを追加

2020/07/28 01:14

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -93,3 +93,109 @@
93
93
  そうすれば、できるだけ説明します。
94
94
 
95
95
  理解できた場合は、コードの説明をお願いします。
96
+
97
+
98
+
99
+ **追記**
100
+
101
+ ビット処理も HashSet も使用しないなら、
102
+
103
+ ```Java
104
+
105
+ import java.util.Arrays;
106
+
107
+
108
+
109
+ class Test {
110
+
111
+ public static void main(String[] args) {
112
+
113
+ int num1[] = { 4, 9, 4, 3, 6, 8, 7, 1, 3, 10 };
114
+
115
+ int num2[] = { 7, 3, 10, 7, 5, 9, 4, 9, 9, 1 };
116
+
117
+ int same[] = new int[10];
118
+
119
+ int side[] = new int[10];
120
+
121
+
122
+
123
+ int n = 0, m = 0;
124
+
125
+
126
+
127
+ for (int i = 0; i < num1.length; i++) {
128
+
129
+ if (find(num2, num1[i])) // num2 の中に num1[i] があれば
130
+
131
+ n = add(same, n, num1[i]); // same に num1[i] を追加
132
+
133
+ m = add(side, m, num1[i]); // side に num1[i] を追加
134
+
135
+ }
136
+
137
+
138
+
139
+ for (int i = 0; i < num2.length; i++)
140
+
141
+ m = add(side, m, num2[i]); // side に num2[i] を追加
142
+
143
+
144
+
145
+ Arrays.sort(same, 0, n); // データ数 n の same をソート
146
+
147
+ Arrays.sort(side, 0, m); // データ数 m の side をソート
148
+
149
+
150
+
151
+ System.out.print("配列1:"); print(num1, num1.length);
152
+
153
+ System.out.print("配列2:"); print(num2, num2.length);
154
+
155
+ System.out.print("共通の数:"); print(same, n);
156
+
157
+ System.out.print("どちらかの数:"); print(side, m);
158
+
159
+ }
160
+
161
+
162
+
163
+ public static void print(int[] a, int n) {
164
+
165
+ for (int i = 0; i < n; i++)
166
+
167
+ System.out.print(" " + a[i]);
168
+
169
+ System.out.println();
170
+
171
+ }
172
+
173
+
174
+
175
+ public static boolean find(int[] a, int e) {
176
+
177
+ for (int i = 0; i < a.length; i++)
178
+
179
+ if (a[i] == e) return true; // 見つかれば true を返す
180
+
181
+ return false; // 見つからなかったので false を返す
182
+
183
+ }
184
+
185
+
186
+
187
+ public static int add(int[] a, int n, int e) {
188
+
189
+ for (int i = 0; i < n; i++)
190
+
191
+ if (a[i] == e) return n; // 既にあればデータ数はそのまま
192
+
193
+ a[n] = e; // 無かったので追加
194
+
195
+ return n + 1; // データ数を増やす
196
+
197
+ }
198
+
199
+ }
200
+
201
+ ```

3

関数名を変更

2020/07/28 01:14

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -14,19 +14,19 @@
14
14
 
15
15
  int bit2 = setBit(num2);
16
16
 
17
- System.out.print("配列1:"); print(num1);
17
+ System.out.print("配列1:"); printA(num1);
18
18
 
19
- System.out.print("配列2:"); print(num2);
19
+ System.out.print("配列2:"); printA(num2);
20
20
 
21
- System.out.print("共通の数: "); print2(bit1 & bit2);
21
+ System.out.print("共通の数: "); printB(bit1 & bit2);
22
22
 
23
- System.out.print("どちらかに入っている数:"); print2(bit1 | bit2);
23
+ System.out.print("どちらかに入っている数:"); printB(bit1 | bit2);
24
24
 
25
- System.out.print("一方だけに入っている数:"); print2(bit1 ^ bit2);
25
+ System.out.print("一方だけに入っている数:"); printB(bit1 ^ bit2);
26
26
 
27
- System.out.print("配列1 だけに入っている数:"); print2(bit1 & ~bit2);
27
+ System.out.print("配列1 だけに入っている数:"); printB(bit1 & ~bit2);
28
28
 
29
- System.out.print("配列2 だけに入っている数:"); print2(~bit1 & bit2);
29
+ System.out.print("配列2 だけに入っている数:"); printB(~bit1 & bit2);
30
30
 
31
31
  }
32
32
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
 
47
- static void print(int[] a) {
47
+ static void printA(int[] a) { // print Array
48
48
 
49
- for (int i = 0; i < 10; i++) System.out.print(" " + a[i]);
49
+ for (int i = 0; i < a.length; i++) System.out.print(" " + a[i]);
50
50
 
51
51
  System.out.println();
52
52
 
@@ -54,7 +54,7 @@
54
54
 
55
55
 
56
56
 
57
- static void print2(int bit) {
57
+ static void printB(int bit) { // print Bits
58
58
 
59
59
  for (int i = 1; i <= 10; i++)
60
60
 

2

誤字修正

2020/07/27 13:00

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -1,4 +1,4 @@
1
- 前回の答の追記のコードの (bit1 ^ bit2) を (bit1 | bit2) にするだけなんですが。
1
+ 前回の答の追記のコードの (bit1 ^ bit2) を (bit1 | bit2) にするだけなんですが。
2
2
 
3
3
  ```Java
4
4
 

1

語句修正

2020/07/27 12:47

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -24,9 +24,9 @@
24
24
 
25
25
  System.out.print("一方だけに入っている数:"); print2(bit1 ^ bit2);
26
26
 
27
- System.out.print("num1 だけに入っている数:"); print2(bit1 & ~bit2);
27
+ System.out.print("配列1 だけに入っている数:"); print2(bit1 & ~bit2);
28
28
 
29
- System.out.print("num2 だけに入っている数:"); print2(~bit1 & bit2);
29
+ System.out.print("配列2 だけに入っている数:"); print2(~bit1 & bit2);
30
30
 
31
31
  }
32
32
 
@@ -82,9 +82,9 @@
82
82
 
83
83
  一方だけに入っている数: 5 6 8
84
84
 
85
- num1 だけに入っている数: 6 8
85
+ 配列1 だけに入っている数: 6 8
86
86
 
87
- num2 だけに入っている数: 5
87
+ 配列2 だけに入っている数: 5
88
88
 
89
89
  ```
90
90