打印 * 号的时候不要用println,用print就行了
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的察雅网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
println是打印后换行,print则是直接打印
把for-j循环for(int j=1;j=height-1;j++)改成for(int j=1;j=height-i;j++)
即j=height-1;改成j=height-i;
完整的Java程序如下:
import java.util.Scanner;
public class ShengDanShu {
public static void main(String[] args) {
int height;//树的高度
Scanner in = new Scanner(System.in);
System.out.println("请输入树的高度");
height = in.nextInt();
for(int i=1;i=height;i++)
{
//首先输出前面的空格
for(int j=1;j=height-i;j++)
{
System.out.print(" ");
}
//输出*
for(int k=1;k=2*i-1;k++)
{
System.out.print("*");
}
System.out.println();
}
}
}
运行结果:
请输入树的高度
6
*
***
*****
*******
*********
***********
按照你的要求加详细注释的圣诞树Java程序如下:(编程思想在注释中说明)
public class ShengDanShu2 {
//这个程序的编程思想是利用对for循环变量i的控制达到一层循环代替双层循环的目的
public static void main(String[] args) {
int n=5; //初始化打印圣诞树层数变量n
int a=0; //初始化打印前置空格数变量a
int b=0; //初始化打印星号数变量b
for(int i=1;i =n;i++){ //打印n层圣诞树
if(a!=(n-i)){ //如果前置空格数不等于n-i
System.out.print(" "); //打印一个空格
a++; //前置空格数加一
i=i-1; //i变量减一 目的是固定住i变量不变直到a==n-i
}else if(b!=(2*i-1)){ //如果星号数不等于2*i-1
System.out.print("*"); //打印一个星号
b++; //星号数加一
i=i-1; //i变量减一 目的是固定住i变量不变直到b==2*i-1
}else if(a==(n-i) b==(2*i-1)){//当以上两个条件都满足时,换行初始化a和b为0
System.out.println(); //打印换行
a=0; //对新的一行重新初始化前置空格数变量a
b=0; //对新的一行重新初始化打印星号数变量b
//这里没有控制for循环的i变量减一,因为这时i变量加一,开始新一行。
}
}
}
}
运行结果:
*
***
*****
*******
*********