首页 > 解决方案 > 如何在java中打印领结?

问题描述

如果输入 N = 5 输出如何制作此模式:

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

这是我的代码

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

结果是这样的:

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

我该如何解决这个问题?

标签: javaloops

解决方案


您现有的尝试实际上非常接近这里是一个修复第二个条件的工作版本(在您当前的尝试中总是错误的):

class Main {
    public static void main(String[] args) {
        printBowtie(5);
    }

    private static void printBowtie(int n) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n + 1; j++) {
                if ((j > i && j < n - i) || (j >= n - i && j <= i)) {
                    System.out.print(" ");
                } else {
                    System.out.print("*");
                }
            }
            System.out.println();
        }
    }
}

输出:

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

相关差异

     private static void printBowtie(int n) {
-        for (int i = 0; i < n + 1; i++) {
+        for (int i = 0; i < n; i++) {
             for (int j = 0; j < n + 1; j++) {
-                if ((j > i && j < n - i) || (j > (n - i) && j < i && i > n)) {
+                if ((j > i && j < n - i) || (j >= n - i && j <= i)) {

推荐阅读