你的void Circle(Point A,double diam)--------这不是一个构造方法,他是void型的普通方法.构造方法不应有返回值.-----也就是说
myshape[3]=new Circle(A,diam)-------不能生成一个正确的对象.
而你的myshape[3]=new Circle(A,diam);/*这具有毛病*/
用的应该是一个Circle类的构造方法.
怀疑是你的void 应该去掉.Circle(Point A,double diam).

解决方案 »

  1.   

    哈哈,不好意思,吧public打成void了,又没查出来.改后的程序变成这段,但还是不
    行.这该如何是好?package myshapes;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */class Point {  public Point() {x=0;y=0;
      }
      public Point(double x,double y){
      this.x=x;this.y=y;
      }
      public double distance (point Z){
      double a=(this.x-Z.x)*(this.x-Z.x)+(this.y-Z.y)*(this.y-Z.y);
      return Math.sqrt(a);
      }
      public static double distance (point M,point N){
      double a=(M.x-N.x)*(M.x-N.x)+(M.y-N.y)*(M.y-N.y);
      return Math.sqrt(a);
      }
      private double x,y;
    ------------------------------------------------------------------
    package myshapes;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */class Shape {
    private double length;
    private double area;
    }
    -----------------------------------------------------
    package myshapes;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */public interface Shapetools {
    double PI=3.14;
    void getLength(Shape shape){}
    void getArea(Shape shape){}
    }
    ------------------------------------------------------
    package myshapes;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */
    import myshapes.*;
    class Circle extends Shape implements Shapetools{
    Point A;
    double diam;
    public Circle(){
    this.A=new Point(0,0);
    diam=0;
    }
    public Circle(Point A,double diam){
    this.A=new Point();
    this.A.x=A.x;
    this.A.y=A.y;
    this.diam=diam;
    }
    public void getLength(){
    length=PI*2*diam;
    System.out.printIn("the leng of the circle is"+leng);
    }
    public void getArea(){
    area=PI*diam*diam;
    System.out.printIn("the area of the circle is"+area);
    }}
    -------------------------------------------------------------
    package myshapes;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */
    import myshapes.*;
    class Rect extends Shape implements Shapetools{
    Point A,B;
    public Rect (){
    A=new Point(0,0);
    B=new Point(1,1);
    }
    public Rect(Point A,Point B){
    this.A=new Point();
    this.B=new Point();
    this.A.x=A.x;
    this.A.y=A.y;
    this.B.x=B.x;
    this.B.Y=B.y;
    }
    public void getLength(){
    double a=Math.abs(A.x-B.x);
    double b=Math.abs(A.y-B.y);
    length=2*(a+b);
    System.out.printIn("the length of the rectangle is"+length);
    }
    public void getArea(){
    double a=Math.abs(A.x-B.x);
    double b=Math.abs(A.y-B.y);
    area=a*b;
    System.out.printIn("the area of the rectangle is"+area);
    }
    }
    ---------------------------------------------------------------
    package myshapes;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */
    import myshapes.*;
    class Myshapes {
    private static Point A=new Point();
    private static Point B=new Point(2,2);
    public static void main(String Args[]){
    InputStreamReader ir;
    BufferedReader in;
    ir=new InputStreamReader(System.in);
    in=new BufferedReader(ir);
    System.out.printIn("please input the diam:");
    String s=In.readLine();
    double diam=Integer.parseInt(s);
    Shape myshape[]=new Shape[4];
    myshape[0]=new Rect();
    myshape[1]=new Rect(A,B);
    myshape[2]=new Circle();
    myshape[3]=new Circle(A,diam);//这句有毛病
    for(int i=0;i<4;i++)myshape[i].getLength;//这句有毛病
    for(int i=0;i<4;i++)myshape[i].getArea;
    }
    }
    _______________________________________________________________
      

  2.   

    哦,你应该把myshape数组定义大一些,至少应该是5个,因为数组的最后一个是存储终止符的。Shape myshape[]=new Shape[4];应为Shape myshape[]=new Shape[5];
    你试一下?
      

  3.   

    还是不行啊.
    信息是:
         not an expression statement in line __(即第一句)
         not an expression statement in line __(即第二句)
      

  4.   

    1 public interface Shapetools {
       public static final double PI=3.14;
       void getLength();
       void getArea();
      }
    myshape[3]=new Circle(A,diam);//这句有毛病
    for(int i=0;i<4;i++)
      myshape[i].getLength();//这句有毛病
    for(int i=0;i<4;i++)  
      myshape[i].getArea();
      

  5.   

    getLength()和getArea()是方法,调用时应该带上():
    for(int i=0;i<4;i++)myshape[i].getLength();
    for(int i=0;i<4;i++)myshape[i].getArea();