我正在尝试做一个Java问题,这是教科书“构建Java程序”第四版中提到的。问题是第11章第751页的第11条:
例如,编写一个名为symmetricSetDifference的方法,该方法接受两个集合作为参数,并返回一个包含它们的对称差异的新集合(即,包含在两个集合中的任何一个集合中的元素集合,但不是两个集合中的元素集合):集合1,4,7,9和2,4,5,6,7之间的差异是1,2,5,6,9。
symmetricSetDifference方法:
public static Set<Integer>symmetricSetDifference(Set<Integer>list1, Set<Integer>list2) {
Set<Integer>set1 = new HashSet<>();
set1.add(1);
set1.add(4);
set1.add(7);
set1.add(9);
Set<Integer>set2 = new HashSet<>();
set2.add(2);
set2.add(4);
set2.add(5);
set2.add(6);
set2.add(7);
Set<Integer>diff = new HashSet<>(set1);
diff.addAll(set2);
Set<Integer>curr = new HashSet<>(set1);
curr.retainAll(set2);
diff.removeAll(curr);
System.out.println(diff);
return diff;
}这是主类。它在一个单独的文件中:
public class TestPointClass {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
newSet = MyUtils.symmetricSetDifference(List1, List2);
}问题是我得到了一个“非法表达式”错误,以及一系列“找不到标识符错误。我想知道是否有人对我能做什么有什么建议?”(我已经检查了任何重复的问题,但找不到任何类似的问题,因此如果有的话,请提前道歉)
发布于 2017-11-04 07:18:58
在方法外部设置两个集合(set1,set2),并将它们作为参数添加:
Set<Integer>set1 = new HashSet<>();
set1.add(1);
...
Set<Integer>set2 = new HashSet<>();
set2.add(2);
...
MyUtils.symmetricSetDifference(set1 , set2 );如果你想使用返回类型,你必须这样做:
Set<Integer> result = MyUtils.symmetricSetDifference(set1 , set2 );https://stackoverflow.com/questions/47105318
复制相似问题