用输入的数字创建一个星星广场

Create a Square of stars with an inputed number

我需要一个代码来帮助我打印一个带有整数输入的星形正方形(在本例中,数字是 5) 正方形内部必须是空的。

例如:

寻找这个输出

* * * * *
*       *
*       *
*       *
* * * * *

我得到了什么

* * * * 
*       
*      
*       
* * * * 

我错过了广场的右侧。

我的代码:

    System.out.print("Please enter a number: ");
    side = input.nextInt();
    for (int i = 0; i < side - 1; i++) {
        System.out.print("* ");

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

    }

}

输入

5

输出

* * * * 
*       
*      
*       
* * * * 

你需要在中间for循环的末尾添加一个额外的星号。这可以通过嵌套第二个 for 空格循环然后打印星号来完成。

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

您可以使用嵌套的 for 循环执行此操作。

for (int i = 0; i < side; i++) {
    for (int j = 0; j < side; j++) {
        if (i == 0 || i == side - 1 || j == 0 || j == side - 1) {
            System.out.print("* ");
        } else {
            System.out.print("  ");
        }
    }
    System.out.println();
}

如果它是第一个 row/column 或最后一个 row/column,则打印一个 * ;否则打印两个空格。

可以使用复杂度为 O(n)

的单个 For 循环来完成
public static void main(String[] args) {
    System.out.print("Please Enter a Number ");
    Scanner scanner = new Scanner(System.in);
    int number = scanner.nextInt();
    if(number >= 3) {
        String endPattern = new String(new char[number]).replace("[=10=]", " *");
        String midPattern = String.format("%-"+(number-2)*2+"s  %s", " *"," *");
        
        for(int i=1; i<= number; i++) {
            if(i==1 || i==number) {             
                System.out.print(endPattern);
            }
            else {
                System.out.print(midPattern);
            }
            System.out.println();
        }
    }
}

输出(对于输入 3)

Please Enter a Number 3
 * * *
 *   *
 * * *

输出(对于输入 7)

Please Enter a Number 7
 * * * * * * *
 *           *
 *           *
 *           *
 *           *
 *           *
 * * * * * * *