2016-06-19 16 views
-1

Ich lerne Objekt und ich versuche verschiedene Dinge zu lernen. Ich habe 2 Methode geschrieben, eine von ihnen gibt ein int zurück und es funktioniert, wie ich will. Aber der andere ist tuffer bc ich mache etwas falsches gibt es seltsame Zahlen. Könntest du mir bitte helfen, wie kann ich Box calculateArea2 schreiben? (Ich habe Getter und Setter angeschaut, aber diese Dinge haben wir noch nicht gelernt). Hier ist mein Code;Wie kann ich eine Methode drucken, die eine Referenzvariable der Flächenberechnung zurückgibt?

public static void main(String[] args) { 
    Box box1 = new Box(); 
    Box box2 = new Box(); 
    String str = JOptionPane.showInputDialog("Enter a length and width"); 
    Scanner input = new Scanner(str); 

    box1.length = input.nextInt(); 
    box1.width = input.nextInt(); 

    int BoxsArea = calculateArea(box1); // calculate box1 
    JOptionPane.showMessageDialog(null, " First Box's area is: "+BoxsArea); 

    String str2 = JOptionPane.showInputDialog("Enter a length and width"); 
    input = new Scanner(str2); 

    box2.length = input.nextInt(); 
    box2.width = input.nextInt(); 

    Box box3 = new Box(); 
    calculateArea2(box2); // Calculate box 2 

    JOptionPane.showMessageDialog(null, " Second Box's area is: "+box3); 

} 

public static int calculateArea(Box k){ 
    return k.length* k.width; 
} 


public static Box calculateArea2(Box k){ 
    Box c = new Box(); 
    c.area = c.length*c.area; 
    return c; 
} 

}

class Box{ 
int length; 
int width; 
int area; 

}

+0

Warum haben Sie eine Zeichenfolge als Parameter im Konstruktor des Scanners ('neuer Scanner (str)')? Wie auch immer, deine Frage ist überhaupt nicht klar. – Gendarme

+1

Überschreiben Sie die 'public String toString()' -Methode der Box-Klasse, so dass beim Übergeben eines Box-Objekts in die println-Methode Text angezeigt wird, der Ihnen den Status der Box-Objekte (Länge, Breite und Fläche) anzeigt. –

+0

@Gandarme Bc Ich möchte wiederholen, was ich weiß, und es hilft, alte Lehren zu remember, –

Antwort

0

c.area = c.length*c.area; sollte c.area = k.length*k.area;

Und sein, das Objekt in der Konsolenprotokolle zu schreiben, sollten Sie toString() Methode für Box wie folgt implementieren:

@Override 
     public String toString() { 
      StringBuilder builder = new StringBuilder(); 
      builder.append("Box [length="); 
      builder.append(length); 
      builder.append(", width="); 
      builder.append(width); 
      builder.append(", area="); 
      builder.append(area); 
      builder.append("]"); 
      return builder.toString(); 
     } 

Sie können das Objekt in der Konsole mit box.toString() oder sogar mit box dann schreiben. Verschiedene IDEs bieten die Möglichkeit, die toString() - Implementierung zu generieren und die Klasse zu betrachten.

+0

Es gibt immer noch Speicherplatz des Objekts:/ –

+0

Aktualisiert meine Antwort. –