Java 为什么此语句打印此输出?
为什么这个打印语句打印3而不是1004作为输出Java 为什么此语句打印此输出?,java,Java,为什么这个打印语句打印3而不是1004作为输出 int n = 2005; for (int i = 0; i < 50; i++) n = (n + 3) / 2; System.out.print(n); int n=2005; 对于(int i=0;i
int n = 2005;
for (int i = 0; i < 50; i++)
n = (n + 3) / 2;
System.out.print(n);
int n=2005;
对于(int i=0;i<50;i++)
n=(n+3)/2;
系统输出打印(n);
如果我这样做:
int n = 2005;
for (int i = 0; i < 50; i++)
System.out.println(n);
n = (n + 3) / 2;
System.out.print(n);
int n=2005;
对于(int i=0;i<50;i++)
系统输出println(n);
n=(n+3)/2;
系统输出打印(n);
它为每个迭代打印2005,最后一次打印1004
如果有括号(如下所示)
int n=2005;
对于(int i=0;i<50;i++){
系统输出println(n);
n=(n+3)/2;
}
系统输出打印(n);
}
然后它的行为就像2005年一样
1004
503
253
128
65
34
18
10
6.
4.
3.
3…3在
for
循环中打印n
,然后您将了解这是如何工作的
int n = 2005;
for (int i = 0; i < 50; i++){
System.out.println(n);
n = (n + 3) / 2;
}
int n=2005;
对于(int i=0;i<50;i++){
系统输出println(n);
n=(n+3)/2;
}
没有详细说明:你每次都或多或少地把n
切成两半。最终n
将接近3。然后它的(3+3)/2==3
。事实上,如果迭代时间足够长,大多数初始数字都会到达那里。您将执行n=(n+3/2)
语句50次。经过一次迭代,它是1004,然后是503,然后是253,然后是128等等。你认为for
循环在做什么?你试过调试吗?你可能还想在循环中使用{}。请阅读+1,了解一个改进了很多的问题,发布编辑。谢谢。这个问题并不像最初看起来的那么简单,但我第一次没有很清楚地解释这个问题。我将编辑这篇文章,以便更好地解释。@user3568042循环没有括号,这不会改变任何事情,如果您有(条件)指令1的,则每次都会执行该语句;指示2代码>指令1每次都将执行,而指令2将在循环结束后执行。这就是我想要的解释。我想知道为什么这两条语句不是每次都执行。
int n = 2005;
for (int i = 0; i < 50; i++){
System.out.println(n);
n = (n + 3) / 2;
}