A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁旭 中级黑马   /  2012-10-14 11:00  /  1357 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

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

3 个回复

正序浏览
试试看:
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();
                                }
                        }
        }
}
回复 使用道具 举报
  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: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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马