不要把类Rectangle定义成内部类,把它与类doRect分开定义

解决方案 »

  1.   

    错误!
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
            at doRect.main(doRect.java:6)
    Press any key to continue...
    就是这个错误
      

  2.   

    class doRect
    {
    public static void main(String args[])
    {
    int w=Integer.valueOf(args[0]).intValue();
    int h=Integer.valueOf(args[1]).intValue();
    Rectangle myrect=new Rectangle(w,h);
    myrect.drawRect();
    }
    }
    class Rectangle
    {
      int width,height,area;
      public Rectangle(int w,int h)
      {
      width=w;
      height=h;
      area=getArea(w,h);  
      }
      protected int getArea(int w,int h)
      {
      int a;
      a=w*h;
      return a;
      }
      public void drawRect()
      {
      int i,j;
      for(i=width;i>0;i--)
          System.out.println("#");
      System.out.print(" ");
      for(i=height;i>0;i--)
      {
      System.out.print("#");
      for(j=width;j>0;j--)
          System.out.print(" ");
          System.out.print("#");
     
      }
      for(i=width;i>0;i--)
      System.out.print("#");
      System.out.print(" ");
      }
    }
      

  3.   

    楼主,是这么回事:因为main是个静态函数,不产生对象,所以它不能调用内隐类.楼上的做法就可以了.如果要实现用内隐类的办法,请如此写:public static void main(String args[]){
    int w=Integer.valueOf(args[0]).intValue();
    int h=Integer.valueOf(args[1]).intValue();
    doRect test=new doRect();
    test.draw(w,h);
    }
    public void draw(int w,int h){
    Rectangle myrect=new Rectangle(w,h);
    myrect.drawRect();
    }
    其他的不变,意思即通过draw产生对象间接调用内隐类.这样就可以了.不过好像产生了两个对象哦,好像不如不用内隐类的好.....
    btw:我觉得楼主还是应该对main的参数检验一下,不管三七二十一就用args[0],args[1]不太好......