Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用foreach循环更改二维数组中的值_Java_Multidimensional Array_Foreach - Fatal编程技术网

Java 使用foreach循环更改二维数组中的值

Java 使用foreach循环更改二维数组中的值,java,multidimensional-array,foreach,Java,Multidimensional Array,Foreach,我在Java中遇到了一个有趣的quark 此代码段将按预期执行(将数组中的所有值更改为0): 但是,这不会: int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } }; for (int[] current : test) { for (int num : current) { num = 0; } } 感谢您的帮助。提前谢谢 编辑: 为了澄清,我理解为什么第二个代码段不起作用。我想知道为什么第一部分有效。谢谢

我在Java中遇到了一个有趣的quark

此代码段将按预期执行(将数组中的所有值更改为0):

但是,这不会:

int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
for (int[] current : test) {
    for (int num : current) {
        num = 0;
    }
}
感谢您的帮助。提前谢谢

编辑:


为了澄清,我理解为什么第二个代码段不起作用。我想知道为什么第一部分有效。谢谢我不是在寻找“这将起作用”的回答,我想知道第一段与第二段的区别。

您只是在更改一个
局部变量。它不会影响正在遍历的数组


for each
循环只是一个合成糖for循环,使用
迭代器

您只需更改为
局部变量。它不会影响正在遍历的数组

for each
循环只是一个带有
迭代器的合成糖for循环

这将起作用:

int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
for (int[] current : test)
    for (int i = 0; i < current.length; i++)
        current[i] = 0;
int[]test={{4,2,6},{7,4,10},{3,4,1};
对于(int[]当前:测试)
对于(int i=0;i
这将起作用:

int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
for (int[] current : test)
    for (int i = 0; i < current.length; i++)
        current[i] = 0;
int[]test={{4,2,6},{7,4,10},{3,4,1};
对于(int[]当前:测试)
对于(int i=0;i
有一个库方法可以为一维数组设置相同的值。使用它,这样你的代码将是干净和快速的

int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
for (int[] current : test)
    Arrays.fill(current, 0);
有一个库方法可以为一维数组设置相同的值。使用它,这样你的代码将是干净和快速的

int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
for (int[] current : test)
    Arrays.fill(current, 0);

谢谢,但是为什么第一个代码段可以工作呢?因为你明确地使用了数组。二维数组是一维数组的一维数组。非常感谢!我现在明白了。谢谢,但是为什么第一个代码段可以工作呢?因为你明确地使用了数组。二维数组是一维数组的一维数组。非常感谢!我现在明白了。非常详细的解释。@PM77-1谢谢您,先生!非常详细的解释。@PM77-1谢谢您,先生!
    int[][] test1 = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
    for (int[] current : test1) {
        for (int num : current) {
            System.out.println(num);
            num = 0;
        }
    }