In my program I've different scenarios
In the beginning set will be empty like this:
[]
User can add values in the set dynamically let say user enter start and end integers as 2 and 6, set will be like this:
[2,3,4,5,6]
A) What user can do:
After user can do like this let say user enter 1 and 2, set will be like this:
[1,2,3,4,5,6]
User can also do like this let say user enter 6 and 8, set will be like this:
[1,2,3,4,5,6,7,8]
B) What user cannot do is this:
Let say user enter 2 and 6 as 2,3,4,5,6
is already present in the set, so program should output error message to the user.
User also cannot do, let say user enter 0 and 10 as 0,1,2,3,4,5,6,7,8,9,10 bold integers are already present in set, so program should output error message to the user.
C) Final Result:
In the end set should be like this [1,2,3,4,5,6,7,8]
Update:
User can also do like this, say in the beginning set is empty like this:
[]
User enter 1 and 3, set will be like this:
[1,2,3]
Afterwords user enter 5 and 7, set will be like this:
[1,2,3,5,6,7]
After user enter 3 and 5, set will be like this
[1,2,3,4,5,6,7]
How can I achieve this, any help would be greatly appreciated.
What I've tried so far is not working:
Scanner reader = new Scanner(System.in);
System.out.println("Enter a start: ");
int s = reader.nextInt();
System.out.println("Enter a end: ");
int e = reader.nextInt();
Set<Double> filterSet = new TreeSet<>();
for (int i = s; i <= n; i++) {
if(filterSet.stream().allMatch(x -> x>=s && x<=e)){
System.out.println("Error");
}
else{
filterSet.add(i);
}
}
I achieved what I wanted by using Google Guava’s RangeSet interface. Thanks to @shmosel who pointed this out to me.