如何打印完整的金字塔图案?
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。
【讨论】:
以上是关于如何打印完整的金字塔图案?的主要内容,如果未能解决你的问题,请参考以下文章