黑马程序员技术交流社区

标题: 用循环解决打印图形的问题 [打印本页]

作者: 丁旭    时间: 2012-10-14 11:00
标题: 用循环解决打印图形的问题
        *      
     * * *     
   * * * * *   
* * * * * * *
   * * * * *   
     * * *     
        *      

打印上面的菱形图形,我使用的方法是,分开打印最后拼接的方式才成功,有没有一次性打印的方法啊,用for语句实现。

作者: 刘伟平    时间: 2012-10-14 11:31
本帖最后由 刘伟平 于 2012-10-14 11:32 编辑


  1. class  Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x = 0;//行号
  6.                 int y = 1;
  7.                 while(x<7)
  8.                 {
  9.                         for (int n = 0;n<(4-y) ; n++)
  10.                         {
  11.                                 System.out.print(" ");
  12.                         }
  13.                         for (int n = 0;n<(2*y-1) ; n++ )
  14.                         {
  15.                                 System.out.print("*");
  16.                         }
  17.                         System.out.println();
  18.                         if (x<3)
  19.                         {
  20.                                 y++;
  21.                         }else{
  22.                                 y--;
  23.                         }
  24.                         x++;
  25.                 }
  26.         }
  27. }
复制代码

作者: 梁世喜    时间: 2012-10-14 11:36
  1. class Print
  2. {
  3. public static void main(String[] args)
  4. {
  5. int num=10;
  6. for(int i=-(num/2);i<=num/2;i++)
  7. {
  8. for(int k=num-Math.abs(i);k<num;k++)
  9. {
  10. System.out.print(" ");
  11. }
  12. for(int j=0;j<=num-2*Math.abs(i);j++)
  13. {
  14. System.out.print("*");
  15. }
  16. System.out.println();
  17. }
  18. }
  19. }
复制代码
这个有待优化。
有写过一个比较简便的方法,一时忘记了
Math.abs()求绝对值
作者: 焦志鹏    时间: 2012-10-14 11:47
试试看:
class TEXT
{
        public static void main(String[] args)
         {
                        int i,j,k;
                        //i 的值,-3,-2,-1,0,1,2,3
                        for(i=-3,j=1;i<=3;j++)
                        {
                          //对i取绝对值,并传至给k
                                if(i<0)                         k=i*(-1);
                                else                                  k=i;
                                       
                                //如果满足条件,输出空格,且跳出本次循环。
                                if(j<=k||(j>7-k&&j!=8))
                                {
                                        System.out.print(" ");
                                        continue;
                                }
                               
                                //如果满足条件输出*
                                if(j>k&&j<=7-k)
                                {
                                        System.out.print("*");
                                }
                               
                                //如果j=8则i自加1,并将0重新赋值为0!
                                //(只有j在[1,7]范围内才输出)
                                if(j==8)
                                {
                                        i++;
                                        j=0;
                                        System.out.println();
                                }
                        }
        }
}




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