2016-08-14 147 views
-3

这是Java代码,我创建了4个班3建设者和我得到的错误:Java错误无法识别的错误

方法区域类矩形不能被应用到给定类型

对于2班的其他人也有类似的错误。在这个程序中基本上我创建了4个类,1个计算矩形的面积,1个计算Tri面积,1个计算Square面积,最后一个是访问主函数。

我已经为所有3类rect tri和square创建了3个构造函数,我无法在这个程序中发现错误。

class Rect //1st class rect 
{ 
    double l, b; //variables 

    Rect(double l, double b)  //constructor for rect 
    { 
     this.l = l; 
     this.b = b; 
    } 

    double area(double l, double b) //method to cal Rect area 
    { 
     return l * b; 
    } 
} 

class Square //square class 
{ 
    double s; 

    Square(Double s) //constructor for class 
    { 
     this.s = s; 
    } 

    double area(double s) //method to cal area for square 
    { 
     return s * s; 
    } 
} 

class Tri // class for triangle 
{ 
    double l, b, h; //variables 

    Tri(double l, double b, double h) // constructor for tri 
    { 
     this.l = l; 
     this.h = h; 
     this.b = b; 
    } 

    double area(double l, double b, double h) //method to cal area for tri 
    { 
     return 0.5 * l * b * h; 
    } 
} 

class Area3 { 
    public static void main(String args[]) { 
     Rect r = new Rect(10, 10); //constructor initialization for Rect 
     Square s = new Square(15.0);//constructor initialization for Square 
     Tri t = new Tri(10.0, 20.0, 30.0);//constructor initialization for Tri 
     System.out.print(" " + r.area() + "" + s.area() + "" + t.area()); //print areas 
    } 
} 
+2

如果您要求人们尝试阅读,请正确缩进您的代码。 – khelwood

+1

“我做的一切都正确” - 显然不是这样。 –

+1

'area'方法需要一个参数('double area(double s)'),并且你没有参数地调用它('r.area()')。 – Tunaki

回答

1

您的区域方法声明指出area方法接受参数。有了这些声明,你不能说

Rect r = new Rect(1,4); 
r.area(); 

只需从地区方法

0

你必须创建无参数面积法,在此溶液中除去双参数值,

class Rect // 1st class rect 
{ 
    double l, b; // variables 

    Rect(double l, double b) // constructor for rect 
    { 
     this.l = l; 
     this.b = b; 
    } 

    double area(){ 
     return this.l * this.b; 
    } 

    double area(double l, double b) // method to cal Rect area 
    { 
     return l * b; 
    } 
} 

class Square // square class 
{ 
    double s; 

    Square(Double s) // constructor for class 
    { 
     this.s = s; 
    } 

    double area(){ 
     return this.s * this.s; 
    } 

    double area(double s) // method to cal area for square 
    { 
     return s * s; 
    } 
} 

class Tri // class for triangle 
{ 
    double l, b, h; // variables 

    Tri(double l, double b, double h) // constructor for tri 
    { 
     this.l = l; 
     this.h = h; 
     this.b = b; 
    } 


    double area(){ 
     return 0.5 * this.l * this.b * this.h; 
    } 

    double area(double l, double b, double h) // method to cal area for tri 
    { 
     return 0.5 * l * b * h; 
    } 
} 

class Area3 { 
    public static void main(String args[]) { 
     Rect r = new Rect(10, 10); // constructor initialization for Rect 
     Square s = new Square(15.0);// constructor initialization for Square 
     Tri t = new Tri(10.0, 20.0, 30.0);// constructor initialization for Tri 
     System.out.print(" " + r.area() + " and " + s.area() + " and " + t.area()); // print 
                     // areas 
    } 
} 

希望这个帮助,BTW它在我的电脑上工作。

0

看看你的承包商,他们都收到一个论点。 和你所有的区域()都有一个参数。

但是!!在你的main中,你正在调用area()并且不给任何值。

只是从area()的函数中删除接收参数。