如何打印完整的金字塔图案?

Posted

技术标签:

【中文标题】如何打印完整的金字塔图案?【英文标题】:How to print a full pyramid pattern? 【发布时间】:2018-06-05 22:08:09 【问题描述】:

我的预期输出

我尝试了以下代码,但它只打印了一个 *.我很困惑代码哪里出错了。 int 行 = 6, k = 0;

            for(int i = 1; i <= rows; ++i, k = 0) 
                for(int space = 1; space <= rows - i; ++space) 
                    t2.setText("  ");
                

                while(k != 2 * i - 1) 
                    t2.setText("* ");
                    ++k;

                
                t2.setText();

            

【问题讨论】:

请更具体一些,您要打印带星号的金字塔吗? 您的代码实际打印了什么?你做了什么调试? 要将文本添加到当前文本视图中,您需要使用 t2.setText(t2.getText() + text);在您的代码中 t2.getText();什么都不做。 你认为setText 是做什么的?它会覆盖任何已经存在的东西。您需要构建一个字符串,然后设置该字符串。 是否需要为三个 setText 语句设置三个字符串? 【参考方案1】:

这将像一个魅力......

int y = 5,x = 5;

for (int i = 0; i < y; i++)

    for (int j = 0; j < x-i; j++)
    
        System.out.print(" ");
    

    for (int k = 0; k < i+1; k++)
    
        System.out.print("* ");
    


    System.out.print("\n");

【讨论】:

+1 以获得好的答案。但是,它会打印 1、2、3、4、5 颗星。预期的答案是 1、3、5、7、9。不过我相信他可以适应它。【参考方案2】:

试试这个:

```

Scanner sc = new Scanner(System.in);
   char s;
   int l;
   System.out.println("Enter the Letter : ");
   s = sc.next().charAt(0);
   l = Character.getNumericValue(s)-9;
   for (int i = 0; i < l; i++) 
   
        for (int j = 0; j < (l - i); j++) 
            System.out.print(" ");
        for (int j = 0; j <= i; j++) 
            System.out.printf("%c%s",(char)j+65,"");
        for (int j = i; j > 0; j--) 
            System.out.printf("%c%s",(char)j+64,"");    
        System.out.println();             
   

```

【讨论】:

我正在 eclipse android 中尝试,所以 system.out.println 语句不起作用 使用 Log.d('HereGoesSomeKeyThatYouCanEasilySearch','AndHereOutputLikeInSYSO');【参考方案3】:

OP 可以这样称呼:

String s = createCharPyramid(5, "*");
t2.setText(s);

并定义这个方法:

private String createCharPyramid(int numberOfRows, String mySymbol)
    String s = "";
    String sep = System.lineSeparator();
    for(int i = 0; i < numberOfRows; i++)
        for(int j = 0; j < (numberOfRows - i); j++)
            s = s + " ";
        
        for(int j = 0; j <= i; j++)
            s = s + mySymbol;
        
        for(int j = i; j > 0; j--)
            s = s + mySymbol;
        
        s = s + sep;
    

    return s;

此答案基于 MrRobot 的答案。他的回答是纯 Java 解决方案,并且会在控制台中正确显示金字塔。所以,如果你喜欢这个答案,请给他 +1。

【讨论】:

以上是关于如何打印完整的金字塔图案?的主要内容,如果未能解决你的问题,请参考以下文章

金字塔图案

打印各种图案~

打印各种图案~

ForDemo.java打印一个金字塔

金字塔图案

怎样用JAVA打印出下面下列数字金字塔