How to draw an inverse pyramid with asterisks in Java

时间:2018-06-19 11:17:46

标签: java arrays algorithm

Code

public static void main(String[] args) {

    String text=JOptionPane.showInputDialog("Introduce height");

    int height=Integer.parseInt(text);

    drawInversePiramid(height);
}

public static void drawInversePiramid(int height){
    for(int numberasterisks=(height*2)-1,numberspaces=0;numberasterisks>0;numberspaces++,numberasterisks-=2){
        //we draw spaces
        for(int i=0;i<numberspaces;i++){
            System.out.println(" ");
        }//we draw the asterisks
        for(int j=0;j<numberasterisks;j++){
            System.out.println("*");
        }//to jump the line
        System.out.println("");
    }
}

I'm having a trouble compiling the pyramid correctly. Instead it simply prints a vertical pattern with the correct number of asterisks.

1 个答案:

答案 0 :(得分:6)

您的代码实际上是正确的,除了一个小细节。您到处都在呼叫println,它将始终打印到换行符。相反,仅在每一行的末尾调用println,而当您想用星号和空格构建给定的行时仅使用print。使用此版本的代码:

public static void drawInversePiramid(int height) {
    for (int numberasterisks=(height*2)-1,numberspaces=0;numberasterisks>0;numberspaces++,numberasterisks-=2){
        // we draw spaces
        for (int i=0; I < numberspaces; i++) {
            System.out.print(" ");
        }
        // we draw the asterisks
        for (int j=0; j < numberasterisks; j++) {
            System.out.print("*");
        }
        // to jump the line
        System.out.println("");
    }
}

drawInversePiramid(3);

我得到正确的输出:

*****
 ***
  *

Demo

相关问题