我一直在尝试使用用户输入的大小绘制圣诞树(打印到控制台)。我也一直在试图找出逻辑,比如空间会占用。对我来说,任何一个都会很棒。此外,此实验室只需要一个循环,并且必须调用我在下面提供的方法写入模式。非常感谢。hintfor抱歉,如果代码太长。这只是为了确保你们能够理解它。以下是我应该使用输入4显示的输出:for (int i=0; i <=size; i++) { writePattern (' ','*',' ', ' ',' ',size -i,i,0,0,0,size+2); writePattern (' ','*','*',' ',' ',size -i,i,i,0,0,size+2); }这就是我上面提到的wrirePattern。private void writePattern(char ch1, char ch2, char ch3, char ch4, char ch5, int n1, int n2, int n3, int n4, int n5, int length) {while ((n1 > 0) && (length > 0)) { System.out.print(ch1); n1--; length--; } while ((n2 > 0) && (length > 0)) { System.out.print(ch2); n2--; length--; } while ((n3 > 0) && (length > 0)) { System.out.print(ch3); n3--; length--; } while ((n4 > 0) && (length > 0)) { System.out.print(ch4); n4--; length--; } while ((n5 > 0) && (length > 0)) { System.out.print(ch5); n5--; length--;}System.out.println(); }这是来自另一个用于提供输出的类:drawer.drawXmasTree(); System.out.println("\n");;
1 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
输出有 2 个部分。
有树的(顶部),用? 字符。leaves
trunk
newline
叶:
从顶部开始,您会注意到第一个星号之前有空格。上面的行将有 ,然后是下一行,依此类推,直到空格数变为 。size
size-1
size-2
0
但是,此模式是不完整的。它只会给你每行的第一个星号。请注意(再次从顶部开始)第一个星号后面有 0 个空格,第二个星号后面有 1 个空格(没有第二个星号),依此类推,直到最后一行。
使用此模式和叶子可能是一个简单/容易(希望)的任务。
树干:
每个星号后面没有空格。
从顶部开始,它打印出空格,然后打印出包含星号的行。然后它打印出空格,紧接着,每个星号行。size-1
1
1
size-2
2
3
这种模式继续,每次空格数减少时,用这种宽度打印的行数增加(两个方向多一个宽度),并且那里的行数增加一倍。1
2
1
如果我犯了错误,请纠正我。这个答案纯粹是关于如何打印它的逻辑;这当然需要翻译成适当的代码才能运行。
添加回答
举报
0/150
提交
取消