迭代器和常规循环

时间:2015-09-30 00:04:59

标签: java iterator

我理解迭代是如何工作的,但我可能需要更多关于它的知识。任何人都可以告诉我这两个陈述之间的主要区别:

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个不同的输出?

1 个答案:

答案 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]元素。