我是一名简介Java学生,我正在为期末考试而学习。我在重复声明循环上进行了先前的测验,看到一个我错了的答案,无法弄清楚为什么答案就是这样。
有人可以告诉我为什么z = 29
在下列情况下(而不是25
)?我的教授说错了,说它是29
,但没有解释。
int z = 0;
for(int x=0; x<5;x++){
for(int y=0; y<5;y++){
z++;
}
z++;
}
z--;
我能够获得29
的唯一方法是内循环执行5
次(外循环相同,因此,5*5=25
加上4?此外我也是在我的IDE中执行此操作,当我尝试system.out.println(z);
4
8
12
16
20
(所以我现在相当困惑)非常感谢您提供的任何帮助。
答案 0 :(得分:1)
您的代码片段:
int z = 0;
for(int x=0; x<5;x++){
for(int y=0; y<5;y++){
z++;
}
z++;
}
z--;
确实导致z
等于29
。让我们计算每个部分z
的差异。对于外循环的每次迭代,内部for
循环迭代五次:
for(int y=0; y<5;y++){
z++;
}
基本上等于:
z += 5;
我们因此将程序重写为:
int z = 0; for(int x=0; x<5;x++){ z += 5; z++; } z--;
现在z += 5;
和z++
等于z += 6;
。我们将程序重写为:
int z = 0; for(int x=0; x<5;x++){ z += 6; } z--;
for
循环再次重复五次,因此z
的更新为:z += 5*6;
或z += 30;
。我们将程序重写为:
int z = 0; z += 30; z--;
最后,我们将三个陈述合并为一个:int z = 0+30-1;
或
int z = 29;
答案 1 :(得分:0)
int z = 0;
// iterate 5 times
for(int x=0; x<5;x++){
// iterate 5 times
for(int y=0; y<5;y++){
// z=z+1
z++;
}
// z=z-1
z--;
}
数学上z = 5 *(5 *(+ 1)-1)
然后z = 20
答案 2 :(得分:0)
对于x中的每个增量,它遍历内部循环5次。并且对于x的每个增量...总共加起来5次......它减去了一个......
因此,
5 *(5 + 1)-1 = 29。
答案是20而不是29.除非你有拼写错误。
答案 3 :(得分:0)
你确定是29而不是20吗?教授有时会有误导性的写作风格。
问题的答案应为20
int z = 0;
for(int x=0; x<5;x++) //0 1 2 3 4 this loop will run 5 times
{
for(int y=0; y<5;y++)//0 1 2 3 4 this loop will run 5 times
{
z++;
}
z--;
}
答案是: z =外循环*(内循环 - 减量) z = 5 *(5 - 1) z = 20
答案 4 :(得分:0)
正确答案是20.也许他或她的20在标记时看起来像29。
答案 5 :(得分:0)
随着内部for循环的每次迭代,z增加1.随着外部for循环的每次迭代,z减少1.
每次内循环循环五次,z增加五。
每次外循环完成一个循环时,z减1,内循环循环5次,因此,对于外循环的每次迭代,z递增4。
外环循环五次=&gt; (z + = 4)* 5 =&gt; Z = 20
<强> 被修改 强>
随着内部for循环的每次迭代,z增加1.对于外部for循环的每次迭代(不包括内部循环),z也会增加。
每次内循环循环五次,z增加五。
每次外循环完成一个循环时,内循环循环五次,z增加一,因此,随着外循环的每次迭代, z增加6 。
外环循环五次=&gt; (z + = 6)* 5 =&gt; Z = 30
最后,你在最后减去了一个,与loop =&gt;无关。 z = 30 - 1 = 29