我的日常任务的目标是计算给定数组(int [] a)中有多少个整数组(从1到10000,10001到20000等到1000000)(例如,a [ 0] = 2,所以它属于组1)。
我对此的看法如下:
static int countingGroups(int[] a)
{
Set<Integer> setOfGroupsExposed = new HashSet<>();
// Creating set for counting groups
List<Integer>list = IntStream.iterate(1,i->i+(1*10000)).limit(101).boxed()
.collect(Collectors.toList());
// list.forEach(System.out::println);
int res = setOfGroupsExposed.size();
for (int i = 0; i <a.length ; i++) {
for (int j = 0; j <list.size() ; j++) {
if(a[i]>=list.get(j)&& a[i]<list.get(j++))
setOfGroupsExposed.add(j);
// System.out.println(setOfGroupsExposed); - prints just empty brackets
}
}
return res;
}
我无法理解我的循环在这里出了什么问题,以及为什么Set总是空的。
答案 0 :(得分:3)
你应该改变
if (a[i]>=list.get(j)&& a[i]<list.get(j++))
到
if (a[i]>=list.get(j)&& a[i]<list.get(j+1))
否则您在每次迭代中增加j
两次,此外,j++
会返回j
的原始值,因此您的条件与if (a[i]>=list.get(j)&& a[i]<list.get(j))
具有相同的效果。< / p>