在一个for循环中,(int i : tall)是什么意思,其中tall是一个整数数组。

13

正如标题所说,有些人向我提到,如果我想打印数字数组中所有元素的总和,我应该在for循环中使用上述参数(如果需要进一步解释,将会跟随代码)。 但是,它的确切定义是什么呢?我的意思是 :- 部分。 它是这样的吗;对于数组中的每个数字 i?

import java.util.*;

class Uke36{
    public static void main(String[]args){

    Scanner input=new Scanner(System.in);
    int[] tall=new int[5];

    for (int i=0; i<=4; i++){
        System.out.println("Vennligst oppgi det " + (i+1) + ". tallet: ");
        tall[i]=input.nextInt();
    }
    int sum = 0;
    for(int i : tall){
        sum+=;
    }
    }
}

增强for循环:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html - hmjd
增强型for循环是关键字。 - Rohit Jain
7个回答

11

这是Java中表示for-each循环的方式。

for (int i : tall) {
  sum += i;
}

读作:对于数组 tall 中的每个整数 i...


啊,好的。谢谢!那么,另一个小问题:下面我已经编辑并写了sum+=i; 这是不是意味着对于数组tall中的每个整数i,它应该将该值添加到已有的整数sum中? - Makri
2
@Makri sum += i; 的意思是 sum = sum + i; - Suresh Atta

2

这是增强型循环。它在Java 5中引入,旨在简化循环操作。你可以将其理解为“对于tall中的每个int”,就像这样写:

for(int i = 0; i < tall.length; i++)
   ...

虽然增强型for循环更简单,但它不如for循环灵活。当你不关心元素的索引时,它是一个很好的选择。

更多阅读


1
+1 对于索引的指点非常有帮助。 - Suresh Atta

2
那个增强的for循环相当于
for (int i=0; i < tall.length; i++) {
    System.out.println("Element: " + tall[i]);
}

下面的表格
 for(int i : tall){

这是一个经典的for循环的简写形式。
注意:
但是使用上述形式有一个条件。
来自语言规范
表达式的类型必须是Iterable或数组类型(§10.1),否则会发生编译时错误。
这里有一些来自Oracle的文档
最后。
 int sum = 0;
    for(int i : tall){
        sum+=;  // sum = sum+i
    }

这意味着将数组中的所有元素相加。

如果是集合类型,可以看看下面的循环如何转换:Java中for-each表达式翻译成了什么?


不,这不能转换成这个循环。该循环使用迭代器。 - Rohit Jain
@RohitJain Java数组是“可迭代的”,对吗? - Suresh Atta
抱歉,混淆了 :( - Rohit Jain
@RohitJain 这种情况我也遇到过很多次,有点困惑 :P - Suresh Atta

1

“增强型”循环

中级

按照顺序遍历数组元素的常规方式是使用“标准”for循环,例如:

for (int i = 0; i < myArray.length; i++) {
    System.out.println(myArray[i]);
}

所谓的增强型for循环是一种更简单的方法来执行同样的操作。(语法中的冒号可以读作“在……中”)
for (int myValue : myArray) {
    System.out.println(myValue);
}

增强型for循环在Java 5中引入,作为一种更简单的遍历Collection(本页不涉及Collections)所有元素的方法。它也可以用于数组,如上例所示,但这不是最初的目的。
增强型for循环简单但不灵活。当您希望按照从前到后的顺序遍历数组元素,并且不需要知道当前元素的索引时,可以使用它。在所有其他情况下,“标准”for循环应该优先考虑。
另外两个语句类型,break和continue,还可以控制增强型for循环的行为。
摘自http://www.cis.upenn.edu/~matuszek/General/JavaSyntax/enhanced-for-loops.html 同时,恳请大家首先尝试在Google上找到答案。

1

for(int i : listOfInt)

这是高级(增强型)for循环,也称为for-each循环,它遍历右侧提供的列表的每个元素,并将每个值迭代地分配给:左侧的变量。

基本上意味着,对于数组/数组列表中的每个元素(在您的情况下,它是一个名为tail的数组)。

请查看此处的文档以获取更详细的信息。


0

文档中阅读:

for语句还有另一种形式,设计用于迭代遍历集合和数组。这种形式有时被称为增强型for语句,并可用于使您的循环更加紧凑和易于阅读。

以下程序EnhancedForDemo使用增强型for循环遍历数组:

class EnhancedForDemo {
        public static void main(String[] args){
             int[] numbers = 
                 {1,2,3,4,5,6,7,8,9,10};
             for (int item : numbers) {
                 System.out.println("Count is: " + item);
             }
        }
    }

In this example, the variable item holds the current value from the numbers array. The output from this program is the same as before:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10

0

这是一个 for-each 循环

   int[] arr=new int[] {1,3,5,7,8};
   for(int i:arr){
       System.out.println(i); 
   }

输出将会是

 1
 3
 5
 7
 8

但这只适用于JDK 1.7及更高版本。早期的JDK版本支持带有Object类型的for-each循环。

以下是类似于此for-each的for循环

    int[] arr=new int[] {1,3,5,7,8};
    for(int i=0;i<arr.length;i++){
        System.out.println(arr[i]);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接