如何在Java中打印星形图案

时间:2019-03-11 06:16:39

标签: java

我试图找到以下星型的任何序列或公式,但我没有找到,因此只需在下面尝试

public class MyClass {
    public static void main(String args[]) {


        System.out.println("....*....");
        System.out.println("...***...");
        System.out.println("*********");
        System.out.println(".*******.");
        System.out.println("*********");
        System.out.println("...***...");
        System.out.println("....*....");

    }
}

“”。表示“”空格字符。 我们可以使用循环打印此星星吗?

4 个答案:

答案 0 :(得分:0)

不知道您的意思是什么,但是如果您确实想要循环,这是一个解决方案!

public class Star {

    public static void main(String[] args) {

        int[] dots = new int[] {4, 3, 0, 1, 0, 3, 4};
        int width= 9;

        for (int i = 0; i < dots.length; i++) {
            for (int j = 0; j < width; j++) {
                if (j < dots[i] || j > width - dots[i] - 1) {
                    System.out.print(".");
                } else {
                    System.out.print("*");
                }
            }
            System.out.println();
        }

    }
}

答案 1 :(得分:0)

希望有帮助!这对于低年级学生来说很容易理解,而不是创建数组

class starPattern {
    public static void main(String []args) {
        for(int i=1;i<=7;i++) {
            for(int j=1;j<=9;j++) {
                if(i==3 || i==5 || j==5 || (i==4 && j>1 && j<9) || ((i==2 || i==6) && (j>3 && j<7))) {
                    System.out.print("*");
                }else{
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}

我的电脑老师检查过,方法正确!

关于此模式的简要说明


1↓  1→  2   3   4   5   6   7   8   9
2                   *               
3               *   *   *           
4   *   *   *   *   *   *   *   *   *
5       *   *   *   *   *   *   *   
6   *   *   *   *   *   *   *   *   *
7               *   *   *           
8                   *               

答案 2 :(得分:0)

我使用的是 Java 11。您应该能够绘制任何星号的对映模式。阅读评论以获取详细说明。

import java.util.Arrays;
class Star {
    public static void main(String[] args) {
        int[] stars = new int[] { 1, 3, 9, 7, 9, 3, 1 }; // asterisks per line
        int max = Arrays.stream(stars).max().getAsInt(); // max asterisks in any line
        for (int i = 0; i < stars.length; i++) { // prints the asterisks for a given row, and pads it left and right with spaces
            System.out.print(" ".repeat((max - stars[i]) / 2) + "*".repeat(stars[i]) + " ".repeat((max - stars[i] + 1) / 2));
    }
}

答案 3 :(得分:-1)

是的,可以使用循环来完成,而不应该通过sout语句来完成。 似乎您也是编程的初学者,所以我建议您自己尝试一下此类问题的逻辑。这将有助于您的成长。

只需逐行尝试。 这些问题通常需要2个循环,一个循环沿垂直方向移动,另一个循环沿水平方向移动。 您可以将其视为i * j矩阵(例如3X3、4X4)。

因此,请从一些基本的开始尝试。 如果您仍然需要解决方案,请ping ping me,但请先尝试一下。