# Zeichenkette ,die ein Rechteck der gegebenen Höhe und Breite  erzeugt



## bradig (6. Okt 2016)

Die Methode  generateRectangle(int height,int width) erzeugt eine Zeichenkette, die ein Rechteck der gegebenen Höhe und Breite erzeugt. 
Der Rand des Rechtecks besteht dabei aus Rauten ('#') und die umrandete Fläche wird mit Leerzeichen ('-') ausgefüllt.
@throws IllegalArgumentException falls mind. einer der Parameterwert kleiner als 3 oder größer
  als 10 ist.
Beispiel: generateRectangle(4,5) liefert "#####\n#---#\n#---#\n#####\n".
Auf der Konsole ausgegeben sieht das so aus:
      #####
      #- - - #
      #- - - #
      #####
so habe ich angefangen und weiß nicht mehr weiter.
public  String generateRectangle(final int height, final int width) {
    if(height<3 || height>10 || width>3 || width>10){
    throw new IllegalArgumentException();
    }

}

Bitte um Hilfe.
Herzlich
Bradig


----------



## scandreb (6. Okt 2016)

Hallo Bradig,

als erstes könntest du die Lesbarkeit deiner Post erhöhen, indem du die Code-Tags verwendest. 

Ich habe es so verstanden, dass du einen kleinen Schubs brauchst, um der Lösung etwas näher zu kommen:
Um einen String mit n-Zeichen zu generieren, könntest du zum Beispiel eine Schleife verwenden.

Hilft dir das? 

Viele Grüße
scandreb


----------



## bradig (6. Okt 2016)

Nein leider nicht.
Ich weiß ,dass  eine Schleife  zum Einsatz kommen wird.
 danke trotzdem


----------



## Viktim (6. Okt 2016)

bradig hat gesagt.:


> Auf der Konsole ausgegeben sieht das so aus:
> #####
> #- - - #
> #- - - #
> #####


Sieht das bei dir schon so aus, oder soll das so aussehen?


----------



## scandreb (6. Okt 2016)

Was hast du denn bisher an Coding, bzw. was hast du alles schon ausprobiert?
Wenn du noch nichts programmiert hast, dann könntest du uns auch an deinen Gedankengängen teilhaben lassen.
Sonst ist es etwas schwierig dir zu helfen. 

Wenn wir dir eine fertige Lösung präsentieren, bringt dich das m. E. nach nicht weiter.


----------



## bradig (6. Okt 2016)

nein .es sollte so aussehen.


----------



## Viktim (6. Okt 2016)

Ich habs mal gemacht, aber halts erstmal zurück...
Mein aufbau:

```
String s;
schleife (weite) {
  s + "#";
}
s + "zeilenumbruch"
schleife (hoehe -2) {
  s + "#";
  schleife (weite -2) {
    s + "-"
  }
  s + "#" + "zeilenumbuch"
}
schleife (weite) {
  s + "#"
}
```

Also:
Wenn du irgendwann frustriert aufgeben solltest, eine Lösung hab ich wohl 

*EDIT:
Geh dein Recheck einfach im Kopf von Oben nach unten durch:
- Erst eine Zeile Rauten, der Breite nach.
- Dann zeilenumbruch
- Dann für jede Zeile (Höhe - 2 weil du ja 2 zeilen nur aus Rauten oben und unten hast.), erst eine Raute, dann eine anzahl Striche (weite - 2  -> wieder wegen den beiden         rauten)
- dann eine Raute und ein Zeilenumbruch
- und zum schluss wieder eine Zeile Rauten *


----------



## Cromewell (7. Okt 2016)

bradig hat gesagt.:


> falls mind. einer der Parameterwert kleiner als 3





bradig hat gesagt.:


> width>3


Ähhm..


----------



## bradig (7. Okt 2016)

habe  leider nicht weitergemacht,weil ich ein anderes Problem hatte.


bradig hat gesagt.:


> Die Methode  generateRectangle(int height,int width) erzeugt eine Zeichenkette, die ein Rechteck der gegebenen Höhe und Breite erzeugt.
> Der Rand des Rechtecks besteht dabei aus Rauten ('#') und die umrandete Fläche wird mit Leerzeichen ('-') ausgefüllt.
> @throws IllegalArgumentException falls mind. einer der Parameterwert kleiner als 3 oder größer
> als 10 ist.
> ...


----------



## bradig (7. Okt 2016)

Die Lösung:
Danke Viktim.

```
public  String generateRectangle(final int height, final int width) {
        if(height<3 || height>10 || width<3 || width>10){
            throw new IllegalArgumentException();
        }
        String  s="";
        for(int i=0;i<width;i++){
            s=s+"#";
        }
        s=s+"\n";
        for(int i=0;i<height-2;i++){
            s=s+"#";
            for(int j=0;j<width-2;j++){
                s=s+"-";
            }
            s=s+"#";
            s=s+"\n";
        }
        for(int i=0;i<width;i++){
            s=s+"#";
        }
        s=s+"\n";
        return s;
    }
```


----------



## Viktim (7. Okt 2016)

bradig hat gesagt.:


> Die Lösung:
> Danke Viktim.


Hast dus denn auch verstanden?


----------



## bradig (7. Okt 2016)

ich habe es richtig verstanden.


----------



## Viktim (7. Okt 2016)

bradig hat gesagt.:


> ich habe es richtig verstanden.


Sehr gut!


----------

