我必须编写一个带有大小值并将其转换为直角三角形(由#
个字符组成)的程序,以使输出看起来像:
#
#
###
#####
#
###
#####
#######
第一个三角形的大小为1。
第二个三角形的大小为4。
第三个三角形的大小为6。
请注意,给定三角形中每行的字符数始终为奇数。
另请注意,最大点处每个三角形的高度可以通过size/2 + 1
我尝试过这个问题,但我很难搞清楚每行如何显示正确数量的#
符号。
这是我自己的代码:
public class triangle {
public static void drawTriangle(int size) {
int column = (size/2) + 1;
for (int i = 0; i <= column; i++) {
for (int j = size; j >= 0; j--) {
if (i <= j) {
System.out.print(" ");
}
else {
System.out.print("#");
}
}
System.out.println();
}
}
public static void main(String[] args) {
drawTriangle(1);
drawTriangle(4);
drawTriangle(6);
}
}
以下是我的代码输出:
#
#
##
###
#
##
###
####
正如你所看到的,我已经以正确的方式排列了三角形,并使每个三角形的高度达到了预期的方式。我根本不知道如何在每一行上获得正确的字符数字......
我尝试过几件事情,包括改变我的第一个for循环:
for (int i = 0; i <= column; i++)
到
for (int i = 1; i <= column; i+=2)
过滤掉偶数行,但无法解决其他参数,例如每个三角形的高度和其他行。以下是我的更改的输出:
#
#
###
#
###
感谢任何帮助,谢谢。
答案 0 :(得分:3)
让我们从代码中退后一步,用英语思考这个问题。第一次尝试这样做让我想到以下几点:
## Person date account Keep
##1 abc 2016-04-01 123 1
##2 abc 2016-04-03 123 1
##3 abc 2016-04-12 123 0
##4 eee 2016-05-03 222 1
##5 eee 2016-05-04 222 1
##6 eee 2016-05-04 333 1
##7 eee 2016-05-06 222 1
##8 eee 2016-05-10 333 0
第一行显示外部for循环需要计算行数。我认为这存储在您的For each row
output the correct number of spaces and #s
变量中。我从中得出结论,你的for循环是相反的。外循环应遍历行,内循环应迭代列。
答案 1 :(得分:2)
使用了一个简单的StringUtil,但你也可以在没有它的情况下编写它。
__init__
答案 2 :(得分:2)
你走了:
public static void drawTriangle(int size) {
for (int i = 1; i <= size + 1; i += 2) {
for (int spaces = 0; spaces <= size - i; spaces++) {
System.out.print(" ");
}
for (int hashes = 0; hashes < i; hashes++) {
System.out.print("#");
}
System.out.println();
}
System.out.println();
}
正如Code-Apprentice所说,有一个主for
循环来显示三角形中的每一行是有意义的。然后,为了在每一行中显示正确数量的空格和散列,我使用了两个嵌套的for
循环。
更新:简化和改进的代码(使用Code-Apprentice的建议)
答案 3 :(得分:-1)
对于给定的size
,每行包含size + 1
个字符(&#34;&#34;或&#34;#&#34;)。第一行中的前导空格数为size
,每行的数量减少2。
这个简单的方法实现了上述规则:
public static void drawTriangle(int size) {
int nSpaces = size;
for (int i = (size/2) + 1; --i >= 0; ) {
for (int j = 0; j <= size; j++) {
System.out.print(j < nSpaces ? ' ' : '#');
}
System.out.println();
nSpaces -= 2;
}
}