Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 需要解释这个for循环的答案吗_Java_Arrays_Loops - Fatal编程技术网

Java 需要解释这个for循环的答案吗

Java 需要解释这个for循环的答案吗,java,arrays,loops,Java,Arrays,Loops,我正在学习java,我不明白为什么在上面的代码中答案是20: int arrays[]={1,2,3,4,5}; int x = 4; int y = 0; for(int i=0; i < 5; i++){ y+=arrays[x-i]*i; } System.out.println(y); int数组[]={1,2,3,4,5}; int x=4; int y=0; 对于(int i=0;i0 0=0+[4-1]~4*1=>

我正在学习java,我不明白为什么在上面的代码中答案是20:

    int arrays[]={1,2,3,4,5};
    int x = 4;
    int y = 0;
    for(int i=0; i < 5; i++){
     y+=arrays[x-i]*i;
    } 
    System.out.println(y);
int数组[]={1,2,3,4,5};
int x=4;
int y=0;
对于(int i=0;i<5;i++){
y+=阵列[x-i]*i;
} 
系统输出打印项次(y);
能给我解释一下吗 谢谢:)

我帮你调试

y=y+[4-0]~5*0=>0

0=0+[4-1]~4*1=>4

4=4+[4-2]~3*2=>10

10=10+[4-3]~2*3=>16


16=16+[4-4]~1*4=>20

如果您在for循环的开头编写此代码段

System.out.println("y=" + y + "+" + arrays[x-i] + "*" + i + " => " + (y + arrays[x-i] * i));
。。。您将获得以下输出:

y=0+5*0 => 0
y=0+4*1 => 4
y=4+3*2 => 10
y=10+2*3 => 16
y=16+1*4 => 20

你为什么不把你增加的每一个值都打印出来呢。这样应该更清楚了,为什么不使用某种调试器呢?或者至少尝试打印出所有添加的数字。如果你不确定发生了什么,这会有很大帮助。你应该先试试,如果你已经阅读并尝试过,请用“我是新来的”这个问题提及你的发现。。我真的不知道所有的诀窍和技巧来理解我不清楚的事情,但是谢谢,我会在需要的时候尝试使用它。首先谢谢你,但是~5~4~3~2~1是什么我知道它是数组,但是为什么它是从5到1而不是1到5这一小段[x-I]的答案在哪里?转到下一个循环?谢谢:)但是如何“传递”输出中的[x-i]部分呢?它使计算和输出的答案呢?或者它在哪里