在Java中打印*的金字塔

在Java中打印*的金字塔,java,Java,我想知道你是否能帮我。我试图用java编写一个嵌套的for循环,它显示一个数字金字塔三角形,看起来像 ___________*# __________*_*# _________*___*# ________*_____*# _______*_______*# ______*_________*# _____*___________*# ____*_____________*# ___*_______________*# __*_________________*# _*____________

我想知道你是否能帮我。我试图用java编写一个嵌套的for循环,它显示一个数字金字塔三角形,看起来像

___________*#
__________*_*#
_________*___*#
________*_____*#
_______*_______*#
______*_________*#
_____*___________*#
____*_____________*#
___*_______________*#
__*_________________*#
_*___________________*#
***********************#
这就是我到目前为止所做的:

class Triagle {
    public static void printTriagle(int n) {
        for (int i = 0; i < n; i++) {
            for (int j = n - i; j > 1; j--) {
                System.out.print(" ");
            }

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

            System.out.println();
        }
    }

    public static void main(String[] args) {
        printTriagle(12);//I want to set the triangle to be height of 12
    }
 }
你的问题在这里:

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

for(int j=0;j我已经更新了您的代码并添加了注释,以便您能够理解。请参阅下面的代码:

public static void printTriagle(int n) {
    for (int i = 0; i < n; i++) {

        for (int j = n - i; j > 1; j--) {
            System.out.print("_");
        }
        String s = "_";
        if (i + 1 >= n) // check if it is the last line
            s = "*"; // change to print * instead of _

        for (int j = 0; j <= i; j++) {
            // printing stars
            if (j == i)
                System.out.print("*#"); // check if the last print of the line
            else if (j == 0)
                System.out.print("*" + s); // check if the first print of the line
            else
                System.out.print(s + s);
        }

        System.out.println();
    }
}
试试这个

public static void printTriagle(int n) {
    for (int i = 0; i < n; i++) {
        for (int j = n - i; j > 1; j--) {
            System.out.print(" ");
        }

        for (int j = 0; j <= i; j++) {
            // printing stars
            if(i == (n-1)){
                System.out.print("**");
            }
            else{
                System.out.print((j == 0 || j == i) ? "* " : " ");
            }

        }
        System.out.println();
    }
}
publicstaticvoidprinttriagle(intn){
对于(int i=0;i1;j--){
系统输出打印(“”);
}

对于(int j=0;j您需要这样做:

public static void printTriagle(int n) {
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < 2*n; j++) {
            if(i == n-1) {
                System.out.print((j != 2*n-1) ? "*" : "#");
            }
            else {
                if(i+j == n-1) {
                    if(i == 0) {
                        System.out.print("*#");
                        break;
                    }
                    else {
                        System.out.print("*");
                    }
                }
                else if(j-i == n-1) {
                    System.out.print("*#"); break;
                }
                else {
                    System.out.print("_");
                }
            }
        }
        System.out.println();
    }
publicstaticvoidprinttriagle(intn){
对于(int i=0;i
我没有看到任何
#
打印代码,但它神奇地出现在您的“输出”中我用java 11来做这件事java 11在每一行上都加上了?除了最后一行打印出这样的内容外都是正确的:***************************************************不确定出了什么问题?@Lemma这就是我添加编辑的原因。我会再次编辑它以使列表行正确。
___________*#
__________*_*#
_________*___*#
________*_____*#
_______*_______*#
______*_________*#
_____*___________*#
____*_____________*#
___*_______________*#
__*_________________*#
_*___________________*#
***********************#
public static void printTriagle(int n) {
    for (int i = 0; i < n; i++) {
        for (int j = n - i; j > 1; j--) {
            System.out.print(" ");
        }

        for (int j = 0; j <= i; j++) {
            // printing stars
            if(i == (n-1)){
                System.out.print("**");
            }
            else{
                System.out.print((j == 0 || j == i) ? "* " : " ");
            }

        }
        System.out.println();
    }
}
public static void printTriagle(int n) {
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < 2*n; j++) {
            if(i == n-1) {
                System.out.print((j != 2*n-1) ? "*" : "#");
            }
            else {
                if(i+j == n-1) {
                    if(i == 0) {
                        System.out.print("*#");
                        break;
                    }
                    else {
                        System.out.print("*");
                    }
                }
                else if(j-i == n-1) {
                    System.out.print("*#"); break;
                }
                else {
                    System.out.print("_");
                }
            }
        }
        System.out.println();
    }