嵌套循环中的星号,Java

Asterisk in Nested loops, Java

我正在尝试让我的代码打印出图像中的星号,如下所示。星号靠右对齐,下面有空格。我不知道如何让它向右移动。这是我的代码:

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();
    }
}

矩阵问题对理解循环很有帮助..

了解您的问题:

1) 首先,在最后打印星号——这意味着你的第一个循环应该按降序排列

for(int i =7;i>=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 开始循环有时可以帮助您更好地想象。

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 结尾的行。因此,您从 i 从 1 开始并经过 3 1+2, 5 3+2,然后是 stopAt 7 5+2.

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

这里是完整的代码:

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();
        }
    }