您的位置:程序门 -> java -> j2se / 基础类



一打印菱形代码,请教!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


一打印菱形代码,请教![已结贴,结贴人:areswang]
发表于:2007-01-22 19:06:41 楼主
public   class   test  
{
      public   static   void   main(string   args[])  
      {
        int   line   =   integer.parseint(args[0]);
        int   n   =   -line;
          do   {
                    show(math.abs(n), '   ');
                    show((line-math.abs(n))*2+1, '* ');
                    system.out.println();
                        n++;
          }while   (n <=line);
}
  public   static   void   show(int   i,char   c)
    {
          for   (int   n   =   0;n <i;n++)  
            {
                system.out.print(c);
            }
      }
}
发表于:2007-01-22 19:30:401楼 得分:0
请教什么
发表于:2007-01-22 19:36:292楼 得分:0
调用show方法时,i的值是不是就是args[0]的值?
打印星号的个数是怎么计算的?show((line-math.abs(n))*2+1, '* ')
发表于:2007-01-22 22:09:423楼 得分:10
args[0]   只是初始的,   打印 '* '的个数就是   (line-math.abs(n))*2+1,   也就是i
发表于:2007-01-22 22:45:424楼 得分:40
不是啊     args[0]   就是你的要打印的菱形的行数,其实它的值       x   *   2   +   1=你菱形的最大行的*个数
你可以看一下你的程序
他是这样的,如果你输入了10

1==〉先打10   个空格     (show(math.abs(n), '   ');)       ,   然后打一个*(   show((line-math.abs(n))*2+1, '* ');),                         再换行(system.out.println();),所以它不是对称打印,只是打印,每行的最后一个*   后面不是和同一行第一个*前面同样个数的空格,而是一个回车换行符

2==〉你的n   =   -line     所以空格会越来越少,因为abs(n+1)     <   abs(n),但是当n   〉=0之后       abs(n+1)   > abs(n)   此时   空格越来越多

3==〉再看你的星号公式     (line-math.abs(n))   *   2   +   1     ,首先你的(abs(n))递减,所以*越来越多,当n为非负时,此时     *     会减小。正好在[-n,n]的区间内完成了上下两个对称的三角形,而不是左右对称
发表于:2007-01-22 22:49:185楼 得分:0
不是啊     args[0]   就是你的要打印的菱形的行数
////////////////////////////////////////////////
说错了   应该是   args[0]=(行数-1)/2
换句话说就是
菱形的行数=菱形的列数=double.parsedouble(args[0])*2   +1
发表于:2007-01-23 12:13:446楼 得分:0
明白了,多谢不懂装懂.


快速检索

最新资讯
热门点击