# Problem mit einem Programm Rechteck Fläche, Umfang



## Whiskey Outpost (19. Apr 2004)

Hallo zusammen ich Arbeite mich momentan Stück für Stück durch Übungsaufgaben durch komme aber leider bei diesem Programm nicht weiter. Nachfolgend poste ich mal die Aufgabenstellung sowie meinen Ansatz:

Programmieren Sie eine Klasse für Rechtecke mit Seitenlängen a und b. Die Klasse soll neben den Seitenlängen einen Konstruktor Rechteck (double a, double b) enthalten, sowie Methoden zur Berechnung von Umfang und Fläche, sowie zur Ausgabe als String (String toString(), in der form "Rechteck mit Länge a und Breite b").


```
public class Rechtecke {

	public static void main(String[] args) {
	double a = (new Double (args[0])).doubleValue();
	double b = (new Double (args[1])).doubleValue();
	double ergebnis = flaeche (a , b);
	double ergebnis2= umfang(a, b);
	System.out.println("Die FLaeche betraegt:" +ergebnis);
	System.out.println("Der Umfang betraegt:" +ergebnis2);
	}
	void rechteck (double a, double b){
	}
	static  double flaeche (double a, double b){
	double A = a*b;
	return A;
	}
	static double umfang (double a, double b){
	double U = 2*(a+b);
	return U;
	}
	public String toString(double a, double b){
		return "Rechteck mit Laenge" +a+"und breite"+b;


	}

	}
```

Was mir nicht ganz klar ist was der Konstruktor Rechteck (double a, double b) bezwecken soll oder der Teil mit dem String toString was genau mit dieser Zeile gemacht werden soll. Bin für jeden Tip dankbar ;-)


----------



## Slava (20. Apr 2004)

```
public class Rechteck {//e habe ich weg gemacht
   //eigenschaften  
   double breite,hoehe;

   //Konstruktor 
      public Rechteck (double a, double b){ 
    breite=a;
    hoehe=b;
   }
   //Methoden
   public double flaeche(){return breite*hoehe;}
   public double umfang(){return 2.0*(breite+hoehe);}

   static  double flaeche (double a, double b){ 
   double A = a*b; 
   return A; 
   } 
   static double umfang (double a, double b){ 
   double U = 2*(a+b); 
   return U; 
   } 
    /*toString braucht keine parameter
   public String toString(double a, double b){ 
      return "Rechteck mit Laenge" +a+"und breite"+b;
   } */
public String toString(){ 
      return "Rechteck mit Laenge" +hoehe+"und breite"+breite+"\n";
   } 

    public static void main(String[] args) { 
   double a = (new Double (args[0])).doubleValue(); 
   double b = (new Double (args[1])).doubleValue(); 
   double ergebnis = flaeche (a , b); //das get nicht, so machen->  double ergebnis = Rechteck.flaeche (a , b); 
   double ergebnis2= umfang(a, b); //so wird gemacht-> double ergebnis2= Rechteck.umfang(a, b); 
   System.out.println("Die FLaeche betraegt:" +ergebnis); 
   System.out.println("Der Umfang betraegt:" +ergebnis2); 

    //jetzt mal anderes
    Rechteck R=new Rechteck(20,30);
    //toString method wird aufgerufen
    System.out.println(R);
    System.out.println("Flaeche ist: "+R.flaeche()); 
    System.out.println("Umfang ist: "+R.umfang());  
   } 

   }
```


----------



## Whiskey Outpost (20. Apr 2004)

Vielen dank für deine Antwort jetzt werd ich mich gleich mal dran machen das Programm zu verstehen. Hatte es mir leichter vorgestellt ;-)


----------



## Whiskey Outpost (20. Apr 2004)

Größten Teils ist mir der Programmablauf nun klar nur hätte ich da noch 2 Fragen ersteinmal zu



```
public String toString(){
      return "Rechteck mit Laenge" +hoehe+"und breite"+breite+"\n";
```

Was hat es hier mit diesem \n auf sich? 
Warum wird das retrun  "Rechteck mit Laenge" +hoehe+"und breite"+breite+"\n";  nach unten zum System.out.println(R); weitergegeben. Ich hatte das String toString als methode aufgefasst welche eben aufgerufen werden muss damit sie den Rückgabewert weitergibt, ich kann nur nicht recht erkennen warum es schliesslich bei System.out.println(R); ausgegeben wird bzw. warum System.out.println(R); die methode String toString aufruft.


```
//toString method wird aufgerufen
    System.out.println(R);
    System.out.println("Flaeche ist: "+R.flaeche());
    System.out.println("Umfang ist: "+R.umfang());
```

Wäre nett wenn du mir das erklären könntest


----------



## Beni (20. Apr 2004)

Das "\n" ist eigentlich nicht soooo toll. Denn wenn der Coder eine neue Zeile will, wird er schon selbst ein "\n" anfügen.

Die "toString" wandelt um "to String". Das ausdrucken muss der Coder übernehmen. Ist auch besser so, denn was wäre sonst, wenn du den String in ein File schreiben möchtest? Oder in ein TextFeld?


----------



## Slava (21. Apr 2004)

1) System.out.println()-> diese methode ruft toString() Method von Objekten ,die als Argument übergeben worden.
2) \n beteutet Zeilenumbruch.
3) Beni hat Recht! Es ist in dem Fall eigentlich überflüssig \n anzuhängen.


----------



## Whiskey Outpost (21. Apr 2004)

Vielen Dank für eure Hilfe jetzt ist mir der Programmablauf klar


----------

