我必须编写一个程序,该程序采用大小值并将其变成直角三角形(由#
字符组成),以使输出看起来像:
#
#
###
#####
#
###
#####
#######
第一个三角形的大小为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)
它过滤掉偶数行,但是无法解决其他参数,例如每个三角形的高度和其他行。这是我所做更改的输出:
#
#
###
#
###
任何帮助表示赞赏,谢谢。
干得好:
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
循环。
更新:简化和改进的代码(使用“学徒”的建议)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句