Gittermuster mit Stringbuilder und einfacher Schleife erstellen

masul

Mitglied
Hallo!

Ich muss gerade eine Aufgabe zum Thema Schleifen lösen. Dabei geht es darum, ein Gitter mit Hilfe des StringBuilders zu erstellen.
Die Aufgabe besteht darin, nur eine einfache Schleife zu schreiben, in den Aufgaben zuvor haben wir immer geschachtelte Schleifen benutzt. Negative Parameter sollen durch 0 ersetzt werden (habe ich mit if gelöst). Die Parameter sollen jeweils vor der Ausgabe beliebige Werte annehmen können und das Gitter abhängig von diesen Werten ausgeben.
Mit der for-Schleife lassen sich erstmal die Spalten darstellen.
Ich habe damit angefangen, erstmal StringBuilder-Objekte (für Zeile, Spalte, und ein leeres Objekt, um später alles zusammenzufügen) zu erzeugen:

Java:
  static public String gitter (int spa, int zei)

   {  StringBuilder sp = new StringBuilder("+-");
      StringBuilder ze = new StringBuilder("|");
      StringBuilder zs = new StringBuilder();

      if (spa<0)  spa=0;
      if (zei<0)  zei=0;

      for (int i=1, j=1; i<=spa ; i++)
      {  zs.append (sp);

      }
      zs.append ("+\n");

      return zs.toString();
   } //gitter()



Das Muster soll so aussehen, wie auf dem Bild.
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    4,6 KB · Aufrufe: 55

masul

Mitglied
Ja, als Hinweis wurde auch genannt, dass man sich genauer anschauen soll, aus was für Zeilen ein Gitter besteht. Dann soll man eine solche Zeile in einem StringBuilder-Objekt zusammenbauen. Vielleicht hilft das ja weiter..
 

tfa

Top Contributor
Man könnte den Schleifenzähler bis spa*zei laufen lassen und sich dann die Spalten- und Zeilennummern mit / und % ausrechnen.
 

Der Müde Joe

Top Contributor
so ein schnellschuss:
Java:
StringBuilder builder = new StringBuilder(200);

final int X = 10;
final int Y = 5;

int x = 0;
int y = 0;

for(int i =  0 ;  i < (X * Y) ; i++)
{
   if (x <= y) {
      if (i % X == 0) {
         x++;
         builder.append ('\n');
      } else {
         builder.append ("+-");
      }
   } else {
      if (i % Y == 0) {
         y++;
         builder.append ('\n');
      } else {
         builder.append ("| ");
      }
   }
}
System.out.println (builder.toString ());
 

masul

Mitglied
Ich verstehe nicht genau, was du meinst..Zunächst würde ich außerdem gerne mal wissen, ob meine StringBuilder sinnvoll gewählt sind.
Also ich habe mir gedacht, dass ich erst die (+-)-Zeile, dann die (|)-Zeile ausgeben lassen möchte, und zwar so oft wie der Wert, der im 2. Parameter angegeben ist. Zum Schluss soll noch einmal die (+-)-Zeile ausgegeben werden.
 

nrg

Top Contributor
nur einfügen und knopf drücken reicht halt manchmal nicht. kuck doch mal wo er die spalten und zeilen definiert hat und wie du das an deine methode angleichen kannst
 

masul

Mitglied
Ok, dankeschön! Ich werde mir den Code jetzt genauer anschauen und versuchen, ihn nachzuvollziehen:)
So habe ich auf jeden Fall mehr davon, statt einfach nur kopieren und einzufügen.
 

Der Müde Joe

Top Contributor
oder noch besser (und auch richtig)
Java:
StringBuilder builder = new StringBuilder(200);

final int X = 4;
final int Y = 7;

String row = "+-";
String column = "| ";
String actual = row;

for (int i = 0; i < (X * Y); i++) {
   if (i % X == 0 && i != 0) {
      if (actual.equals (row)) {
         actual = column;
      } else {
         actual = row;
      }
      builder.append ('\n');
   }
   builder.append (actual);
}
System.out.println (builder.toString ());
 

jgh

Top Contributor
+-+-+-+-
| | | |
+-+-+-+-
| | | |
+-+-+-+-
| | | |
+-+-+-+-

ich bezweifel, dass dieses die richtige Lösung ist (bei deinem oben geposteten Code)
mal abgesehen davon, dass deine Zeilen teilweise mit einem "-" enden, stimmen weder die Anzahl an Zeilen, noch die Anzahl an Spalten.

oder bei 1,1 kommt sowas raus...:
+-

edit:
den Problemfall 0 muss man imho irgendwie so abdecken:
Java:
if (spa <=0||zei<=0){
			return "+";
		}
 
Zuletzt bearbeitet:

masul

Mitglied
Also ich habe jetzt erstmal komplett neu angefangen und das ganze erstmal mit verschachtelten
Schleifen gemacht. Es funktioniert. Jetzt muss ich nur noch wissen, wie ich das umschreiben kann..

Java:
  static public String gitter (int spalte, int zeile)
   {  String plus  = "+-";
	  String strich= "| ";
	  StringBuilder erg = new StringBuilder ("");

      if (spalte<0)  spalte=0;
      if (zeile<0)  zeile=0;
      for (int j=1; j<=zeile;j++)
      {  for (int i=1; i<=spalte; i++)
         { erg.append(plus);
         }
         erg.append("+\n");
         for (int i=1; i<=spalte;i++)
         { erg.append(strich);
         }
         erg.append("|\n");
       }
       for (int i=1; i<=spalte; i++)
	   { erg.append(plus);
	   }
       erg.append("+\n");

      return erg.toString();
   } //gitter()
 
Zuletzt bearbeitet:

tfa

Top Contributor
Du könntest erstmal für "plus" und "strich" einfache String-Variablen verwenden statt StringBuilder. Siehe Beispiel vom müden Joe.
 

Der Müde Joe

Top Contributor
Java:
StringBuilder builder = new StringBuilder(200);

final int X = 5;
final int Y = 1;

String row = "+-";
String column = "| ";
String actual = row;
// anzhal di wir brauchen..
int max  = X * ((Y*2)+1);

for (int i = 0; i <= max; i++) {
   if (i % X == 0 && i != 0) {
      if (actual.equals (row)) {
         actual = column;
         builder.append ('+');
      } else {
         builder.append ('|');
         actual = row;
      }
      builder.append ('\n');
   }
   if (i < max) {
      builder.append (actual);
   }
}
System.out.println (builder.toString ());
 

masul

Mitglied
Ich verstehe diese Lösung nicht ganz, denn bei der Initialisierung erhält doch actual direkt den Wert von row:
Java:
String row = "+-";
String actual = row;

Und später wird in der If-Bedingung geprüft, ob actual gleich row ist:

Java:
 if (actual.equals (row)) {

Diese Bedingung müsste doch dann immer erfüllt sein, oder mache ich da einen Denkfehler??
 

Der Müde Joe

Top Contributor
Der Code
Java:
      if (actual.equals (row)) {
         actual = column;
  //       builder.append ('+');
      } else {
       //  builder.append ('|');
         actual = row;
      }

mach einen Swap. Wenn actual row ist, dann setzt er ihn auf column, sonst umgekehrt.
Immer wenn man X-mal actual gezeichnet hat,kommt ein ende (+ oder |) dann kommt ne neue Linie und es wird geswappt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
sserio StringBuilder und Strings Java Basics - Anfänger-Themen 8
Kotelettklopfer Stringbuilder mit print ausgeben Java Basics - Anfänger-Themen 83
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
P Methode trim() ohne StringBuilder Java Basics - Anfänger-Themen 1
P Stringbuilder richtig einsetzen Java Basics - Anfänger-Themen 1
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
P Schleife für insert() und delete() im StringBuilder in Verbindung mit indexOf() Java Basics - Anfänger-Themen 7
G Wozu ist die Methode offsetByCodePoints(int, int) beim StringBuilder sinnvoll? Java Basics - Anfänger-Themen 1
G Wie kann ich einem StringBuilder einen int Wert formatiert hinzufügen? Java Basics - Anfänger-Themen 8
G Gibt es eine Methode die bei einem StringBuilder n mal das Zeichen c hinzufügt? Java Basics - Anfänger-Themen 6
G StringBuilder .setLength Methode wirkungslos? Java Basics - Anfänger-Themen 2
F StringBuilder: Zeilenumbruch nach x Zeichen ohne Worttrennung Java Basics - Anfänger-Themen 1
K StringBuilder Objekt überschreiben - Speicherverbrauch Java Basics - Anfänger-Themen 3
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
H Suche Vergleichstabelle für die Klassen String und StringBuilder Java Basics - Anfänger-Themen 1
R Frage zum StringBuilder Java Basics - Anfänger-Themen 7
F Scanner + Stringbuilder geben leeren String aus wenn Umlaute enthalten sind Java Basics - Anfänger-Themen 29
M Array erweitern ohne Stringbuilder Java Basics - Anfänger-Themen 6
E StringBuilder.delete Problem Java Basics - Anfänger-Themen 2
J StringBuilder / String zusammensetzen Java Basics - Anfänger-Themen 2
A Datentypen Stringbuilder vollständig leeren Java Basics - Anfänger-Themen 6
F Problem bei StringBuilder Methoden Java Basics - Anfänger-Themen 11
C String oder StringBuilder? Java Basics - Anfänger-Themen 13
Java-Insel StringBuilder Zeilenumbrüche erkennen Java Basics - Anfänger-Themen 3
L StringBuilder Probleme in einer Klasse Java Basics - Anfänger-Themen 4
S im StringBuilder Zeichenketten ersetzen Java Basics - Anfänger-Themen 6
J StringBuilder initialisieren und Löschbefehl Java Basics - Anfänger-Themen 20
B Stringbuilder verwenden Java Basics - Anfänger-Themen 15
L StringBuilder OutOfMemoryError Java Basics - Anfänger-Themen 8
S StringBuilder Java Basics - Anfänger-Themen 13
J Strings und StringBuilder Java Basics - Anfänger-Themen 12
K StringBuilder notwendig ab wann? Java Basics - Anfänger-Themen 42
H Array + StringBuilder in eine Textdatei speichern.laden. Java Basics - Anfänger-Themen 7
D StringBuilder Java Basics - Anfänger-Themen 10
N String oder StringBuffer/StringBuilder Java Basics - Anfänger-Themen 6
R Einfacher Taschenrechner mit Eclipse Java Basics - Anfänger-Themen 3
M Einfacher Taschenrechner Java Basics - Anfänger-Themen 2
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
EinNickname9 Denkfehler bei einfacher Schleife Java Basics - Anfänger-Themen 83
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
N Methoden Einfacher SekundenTimer/Stopuhr in Java Java Basics - Anfänger-Themen 2
X Streams und Ausgabe - lässt sich das einfacher schreiben oder schöner schreiben? Java Basics - Anfänger-Themen 5
H wie mehrere variablen in einfacher for-schleife? Java Basics - Anfänger-Themen 2
N Einfacher Rechner (für mich nicht so einfach) Java Basics - Anfänger-Themen 5
? Klassen einfacher Fehler in einem Java Programm. Java Basics - Anfänger-Themen 5
V Einfacher vergleich von Arrays geht schief Java Basics - Anfänger-Themen 2
K Seltsames Ergebnis in Netbeans bei einfacher Multiplikation Java Basics - Anfänger-Themen 5
O Ein einfacher Chatbot (simuliert chat) Java Basics - Anfänger-Themen 7
R Einfacher Regex Java Basics - Anfänger-Themen 3
L Einfacher Methodenaufruf vs. Objekt Java Basics - Anfänger-Themen 4
K Einfacher random namen weitergeben Java Basics - Anfänger-Themen 4
A Lässt sich dieser Ausdruck irgendwie einfacher schreiben? Java Basics - Anfänger-Themen 4
H Einfacher Editor, Einfache Handelsanweisungen Java Basics - Anfänger-Themen 2
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
P Geht dieser Code noch einfacher? Java Basics - Anfänger-Themen 16
R Einfacher Timer geht nicht Java Basics - Anfänger-Themen 7
M Einfacher Timer ;) Java Basics - Anfänger-Themen 15
M Einfacher Swing Wizard Java Basics - Anfänger-Themen 3
El_Lobo Methoden Zu viele Getter- und Settermethoden - geht das einfacher? Java Basics - Anfänger-Themen 3
P falsches ergebnis bei einfacher berechnung Java Basics - Anfänger-Themen 3
M Einfacher Fenster-Ablauf Java Basics - Anfänger-Themen 5
T Collections Werte aus einer HashMap auslesen, oder gehts auch einfacher ? Java Basics - Anfänger-Themen 6
D Code einfacher,eleganter programmieren Java Basics - Anfänger-Themen 24
F Datentypen Welchen Wert hat ein einfacher Datentyp nach der Deklaration? Java Basics - Anfänger-Themen 6
C einfacher Link zu *.html Datei möglich? Java Basics - Anfänger-Themen 4
Hindi93 Einfacher Code funktioniert nicht... Java Basics - Anfänger-Themen 6
P Einfacher Rechner Java Basics - Anfänger-Themen 2
T Einfacher Kalender Java Basics - Anfänger-Themen 17
B Frage zu einfacher Rechnung Java Basics - Anfänger-Themen 3
B Hilfe bei einfacher Funktion - Possible loss of precision Java Basics - Anfänger-Themen 2
G Einfacher Anfang mit Hibernate Java Basics - Anfänger-Themen 4
M ein einfacher button.. ich verzweifel...... Java Basics - Anfänger-Themen 41
F Von int zu double bei einfacher Rechnung Java Basics - Anfänger-Themen 2
C Einfacher Installer Java Basics - Anfänger-Themen 2
Chucky Einfacher Taschenrechner Verbesserungsvorschläge Java Basics - Anfänger-Themen 13
G Problem mit einfacher For-Schleife und Double Wert Java Basics - Anfänger-Themen 4
D Probleme bei einfacher Rechnung Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben