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

bradig

Aktives Mitglied
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

Mitglied
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
 

scandreb

Mitglied
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.
 

Viktim

Bekanntes Mitglied
Ich habs mal gemacht, aber halts erstmal zurück...
Mein aufbau:
Code:
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 :D

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 ;)
 
Zuletzt bearbeitet:

bradig

Aktives Mitglied
habe leider nicht weitergemacht,weil ich ein anderes Problem hatte.
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
 

bradig

Aktives Mitglied
Die Lösung:
Danke Viktim.
Java:
 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;
    }
 

Oben