Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 嵌套数组引用_Java_Arrays - Fatal编程技术网

Java 嵌套数组引用

Java 嵌套数组引用,java,arrays,Java,Arrays,我目前正在在线学习Java,对以下代码和数组中的一个元素的计算结果感到困惑: int[]a=新的int[]{9,8,3,1,5,4}; for(int i=0;i

我目前正在在线学习Java,对以下代码和数组中的一个元素的计算结果感到困惑:

int[]a=新的int[]{9,8,3,1,5,4};
for(int i=0;i
我正在查看
a[3]
和它的计算结果,当我调试代码时,我的IDE显示
a[a[I]
的计算结果是
9
,这让我有点困惑


我原以为
a[3]
等于
1
,然后
a[1]
等于
8
,但事实似乎并非如此。由于JetBrains Academy课程没有提到这一点,任何人都可以提供清晰的说明。

注意第一个条件-
如果(a[i]%2==0){a[i]+=1;}
-这会导致值甚至增加。因此,
a[1]
8
增加到
9

现在,当
i==3
时,
a[a[i]
被计算为
a[1]
,它等于
9
。然后将其添加到
a[3]
的原始值中(注意,运算符是
+=
,而不是
=
),因此
a[3]
变为
1+9
,即
10

int[] a = new int[] {9, 8, 3, 1, 5, 4};

for (int i = 0; i < a.length; i++){
    if (a[i] % 2 == 0)
        a[i] += 1;
    else if(a[i] < a.length)
        a[i] += a[a[i]];
}
我以为
a[3]
等于
1
这是正确的,在步骤
3
a[3]=1

然后
a[1]
将等于
8
这是不正确的,因为在步骤
1
中,它被增加到
9

其OK值。 查看您正在执行的操作的最佳方法是
debuggin
(本例中为绘画) 您的代码:

int[] a = new int[] {9, 8, 3, 1, 5, 4};

    for (int i = 0; i < a.length; i++){
        if (a[i] % 2 == 0){
            System.out.printf(a[i]);
            a[i] += 1;
            System.out.printf(a[i]);
        }else if(a[i] < a.length){
            System.out.printf(a[i]);
            a[i] += a[a[i]];
            System.out.printf(a[i]);
}
int[]a=新的int[]{9,8,3,1,5,4};
for(int i=0;i

你会看得更清楚。有时候最好自己面对现实,因为一个最佳实践就是了解你。祝你好运!

我刚刚复制并粘贴了上面的代码,我的IDE将a[3]评估为等于10,它正在评估a[a[3]]等于9?@Lorcan谢谢。我误读了第一个条件。出于某种原因,我的头将
a[I]%2==0
翻译为
I%2==0
,这使我认为该条件不会修改
a[1]
。现已修复。抱歉,我当时看着数组,好像它在循环时没有被更新一样!谢谢!看到这一点的最好方法是拿出笔和纸,然后按照逻辑进行操作。请记住,有时,未来的索引会指向已更改的值。因此请始终参考数组的当前状态。谢谢小贴士,我确实喜欢在纸上工作,所以将来遇到困难时,我会尝试一下。
// a = {9, 9, 4, 10, 9, 5};
int[] a = new int[] {9, 8, 3, 1, 5, 4};

    for (int i = 0; i < a.length; i++){
        if (a[i] % 2 == 0){
            System.out.printf(a[i]);
            a[i] += 1;
            System.out.printf(a[i]);
        }else if(a[i] < a.length){
            System.out.printf(a[i]);
            a[i] += a[a[i]];
            System.out.printf(a[i]);
}