我正在浏览在线Java课程,我的任务是创建一个圣诞树,该圣诞树可以根据确定树高的用户输入形成。我无法在打印圣诞树的方法中打印任何内容。我只能打电话给其他会为我打印的方法。输入只是树本身的高度,而不是基础。无论高度如何,底座都是相同的尺寸。
我尝试了很多不同的选项来获得所需的结果,但下面的代码是我最接近的代码。结果是树的弯曲版本,但它很接近......我只是无法弄清楚我做错了什么。
public static void printStars(int amount) {
int i = 0;
while (i < amount) {
System.out.print("*");
i++;
}
System.out.println("");
}
public static void printWhitespaces(int amount) {
int i = 0;
while (i < amount) {
System.out.print(" ");
i++;
}
}
public static void xmasTree(int height) {
int i = 1; // Stars incrementer
while (i <= height) {
int s = (height - i) / 2;
printWhitespaces(s);
printStars(i);
i++;
}
}
结果:
*
**
***
****
*****
******
*******
********
*********
**********
Desired result:
*
***
*****
*******
***
***
答案 0 :(得分:1)
我没有这样做,但希望它没问题;)
public static void printStars(int amount) {
while (--amount >= 0)
System.out.print("*");
System.out.println("");
}
public static void printWhitespaces(int amount) {
while (--amount >= 0)
System.out.print(" ");
}
public static void xmasTree(int height) {
int i = 1; // Stars incrementer
// crown
while (i <= height) {
printWhitespaces(height - i);
printStars(2*i-1);
i++;
}
// trunk
i = 2;
while (--i>=0) {
printWhitespaces(height - 2);
printStars(3);
}
}
答案 1 :(得分:1)
我写的一些动态,想与你分享:)
int n=31;
for (int i=1;i<=n;i++){
if(i%2!=0){
for (int j=i;j<=(n+i)/2;j++){
System.out.print(" ");
}
for (int k=1;k<=i;k++){
System.out.print("*");
}
System.out.println();
}
}
for(int i=1;i<=n/4;i++){
for(int k=1;k<=(n/3);k++){
System.out.print(" ");
}
for(int k=1;k<=n/3;k++){
System.out.print("*");
}
System.out.println("");
}
答案 2 :(得分:0)
空间和星星的数量取决于高度。
public static void xmasTree(int height) {
int spaces=height-1;
int stars = 1;
for(int i=0; i<height; i++){
printWhitespaces(spaces);
printStars(stars);
stars += 2;
spaces -= 1;
}
spaces=height-2;
printWhitespaces(spaces);
printStars(3);
printWhitespaces(spaces);
printStars(3);
}