2016-08-14 146 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()的函數中刪除接收參數。