我理解迭代是如何工作的,但我可能需要更多关于它的知识。任何人都可以告诉我这两个陈述之间的主要区别:
while (scanner.hasNext()) {
tokenizer = new StringTokenizer(scanner.nextLine());
numberOfItems = Integer.parseInt(tokenizer.nextToken());
int[] numbers = new int[numberOfItems];
for (int i:numbers) {
numbers[i] = Integer.parseInt(tokenizer.nextToken());
}
System.out.println(isJolly(numbers));
}
while (scanner.hasNext()) {
tokenizer = new StringTokenizer(scanner.nextLine());
numberOfItems = Integer.parseInt(tokenizer.nextToken());
int[] numbers = new int[numberOfItems];
for (int i = 0; i < numberOfItems; i++) {
numbers[i] = Integer.parseInt(tokenizer.nextToken());
}
System.out.println(isJolly(numbers));
}
为什么这些给我2个不同的输出?
答案 0 :(得分:1)
您已经创建了空数组(填充了零的数组)。
int[] numbers = new int[numberOfItems];
如果是
for ( int i = 0; i < numbers.length; i++ ) ...
我从0开始,每次迭代都会递增(i ++)。当我变得等于或大于numbers.length(又名numberOfItems)时,迭代结束。所以i值的序列是0,1,2,3,4,5,......
如果是
for (int i:numbers) {
您迭代从数组中获取的每个值,您将获得零序列(0,0,0,0,0,...)。
您的号码[i] =将仅更新结果数组的数字[0]元素。