for(double[] row:balances)
for(double b:row)
System.out.printf("%10.2f",b);

System.out.println();这里java核心技术里的一个例子
其中balances是一个二维数组
请教一下这个for each循环的详细解释。for each应该是把整个数组所有的元素一个一个的打印显示出来。
这里用了两个for是什么意思?
第一个还用[]是不是代表row也是一个数组?有人能逐句解释一下么。
谢谢了。我是自学的。找不到人来问

解决方案 »

  1.   

    两个for就是对于balance中的每个row中的每个元素都输出一次;两个for分别是对balance和row的循环。
    如你所说,每个row也是一个数组。
      

  2.   

    balances对象中的元素是double[].第一个for遍历balances将每个double[]出来.
    第二个for遍历的是double[],将double[]的每个元素double取出来.
      

  3.   

    balances就好比一个二维数组, 第一个for语句,举得的row是一个一维数组, 然后第二个循环遍历开始取得的一维数组row!
      

  4.   

    http://blog.csdn.net/lord_is_layuping/archive/2010/09/24/5903235.aspx
      

  5.   

    显示的结果如
    1000    1000    1000    1000    1000
    2000    2000    2000    2000    2000
    3000    3000    3000    3000    3000
    4000    4000    4000    4000    4000
    5000    5000    5000    5000    5000那意思是不是第一个for。先执行把第一行1000    1000    1000    1000    1000赋值到row里去?
    然后执行第二个for转成B
    最后打印?
    然后再回到第一个for里加载2000    2000    2000    2000    2000
    这样循环?其实我主要不懂的地方就是。打印显示出来的是列表形式。
    我知道最后那个println();是换行的意思。但不知道他为什么要先打印显示几个1000后再换行然后再继续打印显示换行
      

  6.   

    java中二维数组也叫做数组的数组,实质是一个一维数组,不过每个数级元素又是一个一维数组,所以第一个foreach循环中每个迭代变量实质是一个数组引用即数组首地址,而第二个foreach是对外层循环中数组类型的迭代变量进行具体的迭代,以获取每个数组中的元素
      

  7.   

    看了这个回贴终于把这个问题搞明白了。
    for(double[] row:balances)
    这条语句其实如果在balances后面加[][]我就能看明白了。
    就是一时转不过弯来。
    其实就是引balances二维数组的第一位,第二位循环一轮。
    然后第一位+1.第二位再重复循环一轮这么简单。