Issue
I expect the following code would give me a subset and a complementary set.
But actually, the result shows that "Error: This is not a subset!"
What it.next() get and how to revise my code to get the result I want? Thanks!
package Chapter8;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Three {
int n;
Set<Integer> set = new HashSet<Integer>();
public static void main(String args[]) {
Three three = new Three(10);
three.display(three.set);
Set<Integer> test = new HashSet<Integer>();
Iterator<Integer> it = three.set.iterator();
while(it.hasNext()) {
test.add(it.next());
three.display(test);
three.display(three.complementarySet(test));
}
}
boolean contains(Set<Integer> s) {
if (this.set.contains(s))
return true;
else
return false;
}
Set<Integer> complementarySet(Set<Integer> s) {
if(this.set.contains(s)){
Set<Integer> result = this.set;
result.removeAll(s);
return result;
}
else {
System.out.println("Error: This is not a subset!");
return null;
}
}
Three() {
this.n = 3;
this.randomSet();
}
Three(int n) {
this.n = n;
this.randomSet();
}
void randomSet() {
while(set.size() < n) {
set.add((int)(Math.random()*10));
}
}
void display(Set<Integer> s) {
System.out.println("The set is " + s.toString());
}
}
Solution
Your problem is in this part:
set.contains(s)
that doesn't do what you think it does, it doesn't take as an argument another Set
to see if its members are contained in the firstset
. It rather looks if the argument passed it is in the Set.
You need to iterate over the "contained" set and use set.contains(element)
for each element in the contained set.
Answered By - morgano Answer Checked By - Willingham (PHPFixing Volunteer)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.