如何打印这个金字塔图案?

时间:2017-05-06 06:56:40

标签: java for-loop

我是java的新手。我不知道如何打印这个金字塔图案...

这是我的尝试:

for (int i=0;i<=input;i++) {
   for (int j=1;j<=i;j++) {
       System.out.print("x");
   }
   System.out.println();
}

输入= 8时的预期输出:

       x
      xox
     xoxox
    xoxoxox
   xoxoxoxox
  xoxoxoxoxox
 xoxoxoxoxoxox
xoxoxoxoxoxoxox

5 个答案:

答案 0 :(得分:7)

在打印符号之前,您需要打印空间。此外,您可以使用if (k%2 == 0)打印两种符号。

for (int i=0; i<=input; i++) {
    for(int j=input; j>=i; j--) {
        System.out.print(" ");
    }

    for (int k=1; k<=i*2-1; k++) {
        if (k%2 == 0)
            System.out.print("o");
        else
            System.out.print("x");
    }

    System.out.println();
}

答案 1 :(得分:0)

此方法使用星号字符绘制金字塔图案。您可以*用任何其他字符替换星号来绘制金字塔。

 public static void drawPyramidPattern() {
     for (int i = 0; i < 5; i++) {
     for (int j = 0; j < 5 - i; j++) {
     System.out.print(" "); 
    }
     for (int k = 0; k <= i; k++) {
     System.out.print("* ");
//write your business logic here to display alternate x and 0
     }
     System.out.println(); 
    }
    }

答案 2 :(得分:0)

第1行:x

第2行:xox(“ox”的数量:1)

第3行:xoxox(“ox”的数量:2)

...

第n行:xoxox ...... ox(“ox:n-1”的数量

所以,第n行如下。

    public static void printXO(int n){
    if(n < 1){
        return;
    }   
    System.out.print("x");
    for(int i = 1 ; i < n ; i++){
        System.out.print("ox");
    }
    System.out.println();
}

对于第n行,我们需要input-n空格。

for(int n = 1 ; n <= input ; n++){
        for(int j = 0 ; j < input - n ; j++)
            System.out.print(" ");
        printXO(n);
    }

这是完整的代码。

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

        int input = 8;
        for(int n = 1 ; n <= input ; n++){
            for(int j = 0 ; j < input - n ; j++)
                System.out.print(" ");
            printXO(n);
        }

    }

    public static void printXO(int n){
        if(n < 1){
            return;
        }   
        System.out.print("x");
        for(int i = 1 ; i < n ; i++){
            System.out.print("ox");
        }
        System.out.println();
    }
}

答案 3 :(得分:0)

使用变量来保留模式,这有助于摆脱不必要的循环。

    StringBuffer pattern = new StringBuffer("x");
    for(int i = 1 ; i <= 8; i++) {
        for(int j = 8 ; j > i ; j--)
            System.out.print(" ");

        // print the pattern for current iteration before appending "ox"
        System.out.print(pattern);
        pattern.append("ox");
        System.out.println("");
    }

答案 4 :(得分:0)

不使用任何循环JavaScript

    var subArray = (space, star, temp = '') => {
    if (space + star <= 0) { return (temp); }
        var arr = (temp.length < space+temp.length) ? ' ' :  '*';
        arr == '*' ? star = star-1 : space=space-1;
        return subArray(space, star, (temp + arr));
}

var pascal = (size, sta = 1, x = 1) => {
        if (x-1 == size) { return false }
        console.log(subArray(size-x, sta));
        pascal(size, sta+= 2, ++x);
}

pascal(10);