对于java中的每个循环都没有使用随循环进展而变化的数组

时间:2017-06-05 15:13:55

标签: java arrays foreach

在此我提供了一个数组数组,这些数组随着循环的进行而变化,结果并不像预期的那样。 请告诉我为什么会这样。

public class forEach2 {

public static void main(String[] args) {

    int a [][] = {{ 1,2,3},{4 ,5,6},{7,8,9}};
    int proArr = 0;
    for (int pro : a[proArr] ){
        System.out.println(pro);
        proArr ++;
    }

}

结果 -

1
2
3

这里,当循环启动proArr(处理数组数组,数组'a'更具体)的值时会发生变化,但这对结果没有影响。

结果是[0];

的数据

为什么会在Java的for循环中发生这种情况?

4 个答案:

答案 0 :(得分:2)

你的程序完全按照你的要求行事。

for ( x in { 1, 2, 3 } )
    echo x

循环总共次,迭代多维数组的索引0中的每个对象。你期待什么?

在此示例中,启动for循环后proArr无意义,因为递增的值永远不会消耗。

如果要打印整个多维数组,必须使用两个嵌套循环。

// Loop super array, getting each nested array
for ( int[] x : a ) {

    // Loop each nested array and print
    for ( int y : x ) {

        System.out.println(y);
    }
}

修改

更新以仅打印每个阵列的第一个元素,如OP需要

// Loop super array, getting each nested array
for ( int[] x : a ) {

    // Print first element of each
    System.out.println(x[0]);
}

答案 1 :(得分:0)

int a [][] = {{ 1,2,3},{4 ,5,6},{7,8,9}};
for (int[] pro : a){
    for(int p : pro){
        System.out.println(p);
    }
}

<强>更新

仅限第一个阵列:

for (int pro : a[0]){
    System.out.println(pro);
}

输出:

1
2
3

答案 2 :(得分:0)

我假设您想要在多维&#39; a&#39;中打印所有值。阵列。你需要两个嵌套的&#39; for&#39;循环来实现这一目标。 更改你的&#39; for&#39;循环到这个:

for(int [ ] pro : a) {
for(int p : pro){
System.out.println(p);
}
}

希望它能解决你的问题:)

修改

如果您只想打印这些阵列的第一个元素,您必须更改“&#39;循环到这个:

for(int [ ] pro : a){
System.out.println(pro[0]);
}

答案 3 :(得分:0)

  

&#34;请在一个forEach的帮助下打印每个数组的第一个元素   环路&#34;

最后,问题的定义!这样做:

for (int[] pro : a ){
    System.out.println(pro[0]);
}