0

我是一个完整的初学者,我正在尝试遵循此代码片段背后的逻辑。

int x = 12;
do {
    for (int w=9; w<x; w++)
        System.out.print(w+” ”);
    --x;
    System.out.println(x);
}while (x>7);

当我运行它时,答案如下:

9 10 11 11
9 10 10
9 9
8
7

如果有人能以简单的方式逐步解释如何阅读代码,我将非常高兴!

4

3 回答 3

3

int x = 12;声明新的局部变量,称为x

do {开始新do...while循环

for (int w=9; w<x; w++)开始新的for循环,它将迭代直到变量w的值小于变量的值x。在这个循环变量的每次迭代之后,w它的值都会增加(增加w++)。w变量的初始值为9( int w=9)。

System.out.print(w+” ”);这个打印输出到控制台变量的当前值w加上之后的一个空格

--x;这减少了x变量的值。这就是所谓的前缀版本操作--

System.out.println(x);将变量的值打印x到控制台并返回回车

}for循环代码块结束(感谢 Chris 修复)

} while (x>7);代码块结束while,条件是循环将结束:直到变量的值x大于7循环才会运行。

UPD:更具体地解释输出结果:

1) 的第一次迭代do loop。我们有x == 12

内部for循环的迭代:

1.1) w == 9, 9 < 12=> 输出9到控制台

1.2) w++=> w == 10, 10 < 12=> 输出10到控制台,

1.3) w++=> w == 11, 11 < 12=> 输出11到控制台,

1.4) w++=> w == 12, 12 == 12=> 结束for循环

2)for循环结束。--x=> x == 11,输出11到控制台并返回回车,所以我们有行9 10 11 11

3) 开始循环的新迭代,do ... while依此x == 11类推,直到x等于 7。

于 2013-01-14T11:09:36.640 回答
0

首先,片段的正确格式将帮助您理解它:)

int x = 12;
do {
    for (int w=9; w<x; w++)
        System.out.print(w+” ”);
    --x;
    System.out.println(x);
} while (x>7);

很难一步一步地描述它,最好使用调试器运行它。但换句话说,程序如下:

  1. 有一个do-while循环,它有内部'for'循环,递减x并打印它
  2. for 循环使用 w 变量并打印它。条件取决于 x 值(我认为,您了解条件如何工作等)
  3. 在 for 循环中,使用 'print' 方法,与 do-while 循环中的 'println' 相反。这就是为什么 w 值被打印在一行中的原因
于 2013-01-14T11:12:20.150 回答
0

如果 x 大于 7,则执行 do/while 循环。for 循环在 do/while 循环内运行。for 循环声明一个整数 w 并将 w 赋值为 9。

于 2015-04-26T18:01:08.410 回答