【发布时间】:2014-09-28 01:25:50
【问题描述】:
我正在尝试创建一个程序,该程序给出由用户输入创建的两个数组的并集、交集和差集。因此,如果用户希望第一个数组的大小为 4,元素为 [1 2 3 4],第二个数组的大小为 5,元素为 [3 4 5 6 7],那么输出应该返回;集合 A 和集合 B 的并集是:1 2 3 4 5 6 7 集合 A 和集合 B 的交集是: 3 4 A组和B组的区别是:1 2 现在获得了交叉点,但是差异不起作用。差异作为第一个数组的所有元素打印出来。我不知道从哪里开始工会。这是我的代码:
package rhc91310a13sets;
import java.util.*;
public class rhc91310a13sets {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] setA = null;
int[] setB = null;
System.out.print("Enter size for set A (must be less than or equal to 20): ");
setA = new int[sc.nextInt()];
System.out.print("Enter elements for set A between 1-20: ");
for (int i = 0; i < setA.length; i++) {
setA[i] = sc.nextInt();
}
System.out.print('\n');
System.out.print("Enter size for set B (must be less than or equal to 20): ");
setB = new int[sc.nextInt()];
System.out.print("Enter elements for set B between 1-20: ");
for (int i = 0; i < setB.length; i++) {
setB[i] = sc.nextInt();
}
System.out.print('\n');
System.out.print("The union of sets A and B are: ");
for(int i = 0; i < setA.length; i++) {
for(int j = 0; j < setB.length; j++) {
}
}
System.out.print('\n');
System.out.print("The intersection of sets A and B are: ");
for (int i = 0; i < setA.length; i++) {
for (int j = 0; j < setB.length; j++) {
if (setA[i] == setB[j]) {
System.out.print(setA[i] + " ");
}
}
}
System.out.print('\n');
System.out.print("The difference of sets A and B are: ");
for (int i = 0; i < setA.length; i++) {
for (int j = 0; j < setB.length; j++) {
if (!(setA[i] == setB[j]))
System.out.print(setA[i] + " ");
}
}
}
}
【问题讨论】:
-
为什么不使用 HashSet?那么所有这些操作都只是一个方法调用。
-
问题是,比如说
setA[0] == setB[1],setA[0] == setB[0]可能是假的,这意味着它会被打印出来。您必须检查每个元素,只有在没有冲突的情况下:打印它。 -
这是作业的味道