2-dimensionales Array

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];

for (int i=0; i

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.

Ok jetzt geht’s
vielen dank :smile:

Aber der gibt mir jetzt nur ein Array mit 4 Zeilen und 4 Spalten aus.

Das liegt nur an deiner Ausgabe du musst den Zeilensprung nur in der ersten for schleife einbauen.

Also vorher eine Zeile zusammensetzen und dann ausgeben

hab ich:

int [][] personen = new int [5][5];

for (int i=0; i

hab ich:

int [][] personen = new int [4][5];

for (int i=0; i

hab ich:

int [][] personen = new int [4][5];

for (int i=0; i

So das sollte das gewünschte Ergebnis sein

public static void main(String[] args) {

int [][] personen = new int [4][5];
String temp;

for (int i=0; i

Hi,
mann mann ich hab schon seit Jahren kein Java mehr codiert. So gehts aber:

int [][] personen = new int [4][5];

for (int i=0; i

Erstmal vielen Dank.
Geht das auch ohne dieses ‚temp‘. also mit meinem Programm als Vorlage?
Weil das wäre für mich einfacher nachzuvollziehen.

´Ne ’

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.

Damit sollte ja alles klar sein oder?

Habe so leider keine Idee woran das liegen könnte.
Vielleicht kannst du ja nochmal deinen Sourcecode hier posten?

Tut mir leid hab erst jetzt deine Antwort gesehen.
Ja das konnte ich jetzt nachvollziehen
vielen dank nochmal :smile:

Es geht doch mit meiner Lösung bloß muss ich bei der zweiten Schleife schreiben ‚personen[i].length‘, bloß weiß ich nicht wieso.

Es geht doch mit meiner Lösung bloß muss ich bei der zweiten
Schleife schreiben ‚personen[i].length‘, bloß weiß ich nicht
wieso.

axo ich dachte die Ausgabe war nicht richtig formatiert…

naja da das personen doppelt verschachtelt ist musst du dort auf die 2. ebene zugreifen…

‚personen[0].length‘ oder ‚personen[1].length‘ würde genau so gut gehen…

Nur du must wissen wie viele Spalten zu jeder Zeile gehören und dann musst du eben auf eine Zeile zugreifen und davon die länge bestimmen

Okay, dann ist jetzt alles klar. danke

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:

hoffe, das hilft weiter