嵌套循环中的星号,Java

时间:2015-02-17 05:18:04

标签: java eclipse asterisk nested-loops

我正在尝试将代码打印出图像中的星号,您将在下面看到。星号与右侧对齐,它们下面有空格。我无法弄明白,如何让它走向正确。这是我的代码:

public class Assn4 {
    public static void main(String[] args) {
        for (int i = 0; i <= 3; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print("*");
            }

            for (int x = 0; x <= 1; x++) {
                System.out.println(" ");
            }

            for (int j = 0; j <= i; j++) {
                System.out.print("*");
            }
        }
        System.out.println();
    }
}

enter image description here

3 个答案:

答案 0 :(得分:1)

矩阵问题对于理解循环非常有用..

了解您的问题:

1)首先,最后打印星形 - 这意味着你的第一个循环应该按递减顺序

for(int i = 7; i&gt; = 0; i + = i-2)

2)以递增顺序打印星形 - 这意味着您的第二个循环应按递增顺序

for(int j = 0; j <= 7; j ++)

完整代码:

for(int i =7;i>=0; i=i-2){ // i=i-2 because *s are getting incremented by 2
     for(int j =0;j<=7; j++){
         if(j>=i){ // if j >= i then print * else space(" ")
            System.out.print("*");
         }
         else{
            System.out.print(" ");
         }
    }
    System.out.println();// a new line just after printing *s

}

答案 1 :(得分:0)

使用1启动循环有时可以帮助您更好地进行可视化。

int stopAt = 7;
for (int i = 1; i <= stopAt ; i += 2) {
    for (int j = 1; j <= stopAt; j++) {
        System.out.print(j <= stopAt - i ? " " : "*");
    }
    System.out.println();
}

请注意,每行如何打印以7开头的奇数个* s。因此,您从1开始i并经过3 1+2,5 { {1}},然后3+2 7 stopAt

嵌套5+2循环必须始终打印7个字符,以确保for显示为右对齐。因此,循环从*运行到1

答案 2 :(得分:0)

这里有完整的代码:

for(int i = 0; i < 8; i++){
        if( i%2 != 0){
            for(int x = 0; x < i; x++){
                System.out.print("*");
            }
        }else{
            System.out.println();
        }
    }