我需要解释输出如何打印9(S),7(S),5(S)和3(S)。
10> 3是正确的,并且到达y 1 <= 2这是正确的,所以2 x 10-2 = 18,但是输出显示9。我不明白这里的逻辑。为什么打印9(s)而不是18(s)?
public class Q2{
public static void main(String args[]) {
int x,y;
for(x= 10; x > 3; x = x - 2) {
for(y = 1; y <= 2 * x - 2; y = y + 2)
System.out.print("S");
System.out.print("\n");
}
}
}
答案 0 :(得分:1)
它的正确Y <= 18,但是您将Y加2,所以它被打印9次。
答案 1 :(得分:0)
要了解,请在纸上写下变量的值。
首先,记下x
的值:
x: 10 8 6 4
接下来,记下y
的计算上边界值,即表达式2 * x - 2
的结果:
x : 10 8 6 4
yMax: 18 14 10 6
最后,记下y
的值:
x : 10 8 6 4
yMax: 18 14 10 6
y : 1 1 1 1
3 3 3 3
5 5 5 5
7 7 7
9 9 9
11 11
13 13
15
17
最后,为每个y
值计算x
个值的数量,即打印S
的次数:
x : 10 8 6 4
count: 9 7 5 3
然后意识到,如果只是这样编写代码,则本来会更容易理解:
for (int count = 9; count >= 3; count -= 2) {
for (int i = 0; i < count; i++) {
System.out.println("S");
}
}
当然,那不会教你他们想教你的东西,即:
结论:如果您不了解代码在做什么,请按照逻辑逐步进行操作,并写下代码在做什么。