需要for循环输出说明吗?

时间:2019-05-10 03:25:31

标签: java for-loop

我需要解释输出如何打印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");
            } 
}  
}

2 个答案:

答案 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");
    }
}

当然,那不会教你他们想教你的东西,即:

结论:如果您不了解代码在做什么,请按照逻辑逐步进行操作,并写下代码在做什么。