Hallo,
Es geht um folgende Aufgabe:
Erzeugen Sie ein zweidimensionales Array mit 5 Zeilen und 4 Spalten und
initialisieren dieses mit den Werten von 1 bis 20. Geben Sie das Array auf
dem Bildschirm aus. Verwenden Sie für diese Aufgabe zwei geschachtelte
Schleifen.
Ich hab schon eine Lösung erstellt, bloß gibt der mir ein Array aus, bei dem alle 20 Zahlen untereinander stehen. Wie kann ich das ändern?
Der Programmcode lautet folgendermaßen:
int [][] personen = new int [4][5];
Die Ausgabe hat nichts mit der internen Speicherung zu tun. println erzeugt automatisch eine neue Zeile. Deshalb springt er für jede Zahl in eine neue Zeile. Verwende einfach nur print statt println, dann springt er bei der Ausgabe nicht in eine neue Zeile und in einer zusätzlichen äußeren Schleife dann println.
Erstmal vielen Dank.
Geht das auch ohne dieses ‚temp‘. also mit meinem Programm als
Vorlage?
Weil das wäre für mich einfacher nachzuvollziehen.
Hi,
ich denke schon das es möglich ist ohne den String zu arbeiten. Aber das wäre wohl noch komplettierter. Mir fällt jetzt kein einfacherer Weg ein.
Aber was ist an temp nicht nachzuvollziehen?
Temp ist ein String,
Am Anfang ist temp leer also ohne Inhalt dafür das temp = „“;
Dann fülle ich den String mit Inhalt. also ich nehme den vorhanden string und füge mit +(personen[i][j] + „\t“) den Aktuellen Inhalt hin zu das geht jetzt für alle Spalten und es wird immer ein Element angefügt.
und mit System.out.println(temp); wird einfach der Inhalt des Strings ausgegeben.
hallo
sorry für die lange reaktionszeit, war nicht am mail…
falls das problem gelöst ist, nachricht einfach ignorieren.
zuerst zum problem: du gibst jede zelle des arrays einzeln mittels println aus, das per definition nach dem aufruf einen return auf die nächste zeile anhängt. „System.Out.print(personen[i][j] +“\t");" könnte besser passen.
ausserdem (wurde zwar nicht gefragt aber der vollständigkeit halber): personen.length gibt immer 4 zurück, woher soll der compiler auch wissen, dass du einmal 4 und einmal 5 benötigst. du wirst also wohl nur 16 statt 20 ausgaben haben. hier hilft personen[0].length (gibt die spalten zurück).
Math.random()*20 gibt werte von 0 bis 19, nicht 1 bis 20. ausserdem generiert es zufallswerte, du willst aber die werte 1…20. mit hilfe einer dritten zählvariabel kannst du das lösen (oder, mit etwas mehr cpu-aufwand: personen[i][j] = i*4+j+1:wink: