黑马程序员技术交流社区

标题: 用程序写星问题 [打印本页]

作者: 追梦之旅    时间: 2014-4-11 23:51
标题: 用程序写星问题
2、利用程序输出如下图形:
                         *              
                         * * *
                         * * * * *
                         * * * * * * *
                         * * * * *
                         * * *
                         *         如何用java程序打出这样的图型,改如何分析这题呢    求详解


作者: Kelvinhu    时间: 2014-4-11 23:53
分析一下 这个是按照行来的,

第四行是最长的一行,前4行是每行+2个星,后四行是前4行的镜像(也就是每星-2)
作者: 程序爱好者    时间: 2014-4-12 00:39
  1. public class Dome {
  2.         public static void main(String[] args) {
  3.                 /*
  4.                  这个分开来大  把第一部分看做是 :
  5.                             *
  6.                             ***
  7.                             ******
  8.                             ********
  9.                              第二部分:
  10.                             *****
  11.                             ***
  12.                             *   
  13.                  */
  14.                 for (int i = 1; i <=4; i++) {    //控制第一部分的行数
  15.                         for (int j = 1; j <=2*i-1; j++) {  //行数*i-1
  16.                                 System.out.print("*");
  17.                         }
  18.                         System.out.println();
  19.                 }
  20.                 for (int i = 1; i <=3; i++) {                //控制第二部分的行数。
  21.                         for (int j = 1; j<=7-2*i; j++) {  //7-2*1是有 3*2-(2*i-1)转过来的.
  22.                                
  23.                                 System.out.print("*");
  24.                         }
  25.                         System.out.println();
  26.                 }       
  27.         }
  28. }
复制代码


我也是新手   我知道对不对   一起研究一下
作者: caijunsong    时间: 2014-4-12 00:47
  1. public class Demo
  2. {
  3.         public static void main(String[]agrs)
  4.         {
  5.                 int s;
  6.                 //打印1-4行
  7.                 for(int i=1;i<=4;i++)
  8.                 {
  9.                         s=2*i-1;
  10.                         for(int j=1;j<=s;j++)
  11.                                 System.out.print("*");
  12.                         System.out.println("");
  13.                 }
  14.                 ////打印5-7行
  15.                 for(int i=3;i>=1;i--)
  16.         {
  17.            s=i*2-1;
  18.            for(int j=1;j<=s;j++)
  19.                                 System.out.print("*");
  20.                         System.out.println("");
  21.                 }
  22.         }
  23. }
复制代码

作者: 清风夜独醉    时间: 2014-4-12 03:29
其实就是一个嵌套循环的问题。
外循环控制输出的行数,内循环控制输出的"*"的个数。
可以把它分开看成两部分做,也可以看成一部分直接做,只是其中加上if语句做判断。
  1. for(int i=1;i<=7;i++){
  2.                         if(i<=4){
  3.                                 int j = 0;
  4.                                 while(j<(i*2-1)){
  5.                                         System.out.print("*");
  6.                                         j++;
  7.                                 }
  8.                                 System.out.println();
  9.                         }else{
  10.                                 int j = 0;
  11.                                 while(j<((8-i)*2-1)){ //第i行其实就是倒数第8-i行。
  12.                                         System.out.print("*");
  13.                                         j++;
  14.                                 }
  15.                                
  16.                                 System.out.println();
  17.                         }
复制代码

作者: 追梦之旅    时间: 2014-4-12 11:44
我弄到的答案是这class t02 {

        public static void main(String[] args) {

                for (int i = 1; i <= 13; i += 2) {

                        for (int j = 1; j <= i && i + j <= 14; j++) {
                                System.out.print("* ");
                        }

                        System.out.println(); // 换行

                }

        }

}  开始我也是分段写的 ,没写出来,看了答案这样写很难想到所以就麻烦了各位。只要答案对就行了。谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2