2016-11-30 4 views
-3
public class RightAngleTriangle 
{ 
    int height; 
    int width; 
    double area; 
    double perimeter; 

    public RightAngleTriangle() 
    { 
     height = 1; 
     width = 1; 
    } 

    public RightAngleTriangle(int hei, int wid) 
    { 
     if(hei > 0 && wid > 0) 
     { 
      height = hei; 
      width = wid; 
     } 
     else 
     { 
      height = 1; 
      width = 1; 
     } 
    } 

    public double area() 
    { 
     area = height * width; 
     return area; 
    } 

    public double perimeter() 
    { 
     perimeter = (height * 2) + (width * 2); 
     return perimeter; 
    } 

    public boolean isIsosceles() 
    { 
     if(height == width) 
     { 
      return true; 
     } 
     return false; 
    } 

    public boolean largerThan(RightAngleTriangle anotherRightAngleTriangle) 
    { 
     if (area(RightAngleTriangle) > area(anotherRightAngleTriangle)) 
     { 

     } 
    } 

} 

Für das Verfahren largerThan() wie kann ich es machen, so largerThan() kehrt true, wenn und nur wenn die Fläche dieses RightAngleTriangle ist größer als die Fläche von anotherRightAngleTriangle. Ich bin nicht sicher, wie man die Bereiche vergleicht, weil das area lokal berechnet wird. Ich habe versucht, area global zu initialisieren, aber ich brauche den zurückgegebenen Wert nicht den initialisierten Wert.JAVA Rückgabewert von Konstruktor

+7

'largerThan()' tun ist kein const Rektor. – Bathsheba

+0

Whoops, ich meine Methode – sdfjbs

+0

Verwenden Sie "dies", um auf die Klasse mit der Methode verweisen. – KyleKW

Antwort

2

Wie ein Kommentar largerThan() ist kein Konstruktor ist eine Methode

jetzt auf Ihre Frage

müssen Sie die Methode in der aktuellen Instanz anrufen und in dem Objekt als Parameter übergeben

public boolean largerThan(RightAngleTriangle anotherRightAngleTriangle) 
{ 
    if (this.area() > anotherRightAngleTriangle.area()) 
    { 
     //your logic 
    } 
} 

oder einfach

public boolean largerThan(RightAngleTriangle anotherRightAngleTriangle) 
{ 
    return this.area() > anotherRightAngleTriangle.area(); 
} 
+0

Ok danke, aber warum ist 'this.area()' anstelle von 'RightAngleTriangle.area()'? – sdfjbs

+0

@sdfjbs Weil area() keine statische Methode ist. Nur statische Methoden können so aufgerufen werden (ClassName.staticMethod()). Eine nicht statische Methode kann nur von einem Objekt dieser Klasse aufgerufen werden und "dies" bezieht sich einfach auf das aktuelle Objekt, in dem Sie arbeiten. –

+0

@sdfjbs Sie können es einfach nicht tun ** RightAngleTriangle.area() ** weil der Methodenbereich ist nicht statisch ... –