尝试反转嵌套for循环的输出

时间:2019-02-14 18:10:58

标签: java nested-loops

我试图弄清楚此嵌套for循环的逻辑。从功能上讲,代码可以工作,但输出应取反。

我尝试使用嵌套的for循环的逻辑,但是它总是使我的IDE崩溃。另外,切换for循环输出的内容并不能达到预期的效果。

public class stardot {
    public static void main(String[] args) {
        for (int i = 5; i >= 1; i--) {
            for (int j = 1; j <= i; j++) {
                System.out.print(" * ");
            }
            System.out.println();
            for (int k = 5; k >= i; k--) {
                System.out.print(" . ");
            }
        }
    }
}

这是我当前得到的输出:

 *  *  *  *  * 
 .  *  *  *  * 
 .  .  *  *  * 
 .  .  .  *  * 
 .  .  .  .  * 
 .  .  .  .  . 

这是我想要的输出:

 *  *  *  *  * 
 *  *  *  *  . 
 *  *  *  .  . 
 *  *  .  .  . 
 *  .  .  .  .
 .  .  .  .  .

2 个答案:

答案 0 :(得分:1)

尝试用文字写出如何用铅笔绘制这种图案。忘记这是一个计算机程序,将其视为逻辑问题。像这样的东西(其中“ ???” =学生的锻炼)

for lineNumber = 1 to 6 {
    numberOfDots = ???
    numberOfStars = ???
    for s = 1 to numberOfStars {???}
    for d = 1 to numberOfDots {???}
}

答案 1 :(得分:1)

这是解决您问题的方法:

public static void main(String []args){
    for (int i = 0; i < 5; i++) {
            for (int k = i; k < 5; k++) {
                System.out.print(" * ");
            }
            for (int j = i; j > 0; j--){
                System.out.print(" . ");
            }

            System.out.println();
     }
}

当数字这样循环计算时,有助于查看每一行所需的每个字符的数量。因此,例如,在第一行中,您需要5个星号,0个句点。然后您需要4个星号和1个句点,然后需要3个星号和2个句点,等等...

然后,当您找到每行的这些值时,请尝试查找模式。因此我们可以看到,当i为0时,我们需要5个星号(5-i)和0个句点(i-0)。当i为1时,我们需要4个星号(5-i)和1个句点(i-0)。等等...从那里,我们可以看到for循环的结构需要与i相关。