java编打出5行圣诞树,求教每一步详细思想。下面是代码

希望能说的详细点,每一步的思想尽量都说明一下,新手努力学习中,万分感谢!publicclassShengDanShu2{publicstaticvoidmain(Stri... 希望能说的详细点,每一步的思想尽量都说明一下,新手努力学习中,万分感谢!
public class ShengDanShu2 {

public static void main(String[] args) {
int n=5;
int a=0;
int b=0;
for(int i=1;i <=n;i++){
if(a!=(n-i)){
System.out.print( " ");
a++;
i=i-1;
}else if(b!=(2*i-1))
{
System.out.print( "*");
b++;
i=i-1;
}else if(a==(n-i) && b==(2*i-1)){
System.out.println();
a=0;
b=0;
}
}
}

}
展开
 我来答
紫薇参星
科技发烧友

2016-06-04 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3625万
展开全部

按照你的要求加详细注释的圣诞树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变量加一,开始新一行。
      }   
     }   
    }     
}

运行结果:

    *
   ***
  *****
 *******
*********

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式