Mehrdimensionalen Array ausgeben

Status
Nicht offen für weitere Antworten.

w0ddes

Bekanntes Mitglied
Hey,

ich bin's schon wieder 😀
Ich habe jetzt einen mehrdimensionalen ObjectArray
Java:
Object [][] daten;
Dieser ist bereits mit Daten gefüllt.

Wenn ich jetzt
Java:
System.out.println(daten);
aufrufe, bekomme ich die Ausgabe:
Code:
[[Ljava.lang.Object;@1b67f74

Bei dem Aufruf
Java:
System.out.println(Arrays.toString(daten));
wird es zu:
Code:
[Ljava.lang.Object;@1a758cb, [Ljava.lang.Object;@1b67f74, [Ljava.lang.Object;@69b332, [Ljava.lang.Object;@173a10f, [Ljava.lang.Object;@530daa, [Ljava.lang.Object;@a62fc3, [Ljava.lang.Object;@89ae9e, [Ljava.lang.Object;@1270b73, [.........]

Wie kann ich das weiter umformatieren bzw. die Ausgabe richtig einstellen?😳

mfg

Jens
 
In einer Schleife alle Elemente durchgehen und dann mit Arrays.toString arbeiten. Oder mit zwei verschachtelten Schleifen alle Elemente einzeln durchgehen und ausgeben.
 
Schonmal danke für die schnelle Antwort.

Ich steh grade aber voll auf dem Schlauch...

Ich hab das Ganze jetzt so:
Java:
			for(int i=0; i <daten.length/6; i++){
					System.out.println("Gesammter ObjectArray: " + Arrays.toString(daten[i]));
			}
Die Formatierung der Ausgabe stimmt nun, also ich bekomm es als Matrix so angezeigt wie ich möchte, jedoch steht noch immer
Code:
[Ljava.lang.Object;@10b4199; [.......]
in der Ausgabe
 
Warum kein
Java:
Object[][] array = ...;
for (int i = 0; i < array.length; i++)
{
    for (int j = 0; j < array[i].length; j++)
        System.out.print( array[i][j].toString() + ", " );
    System.out.println();
}
...ok, es knallt wenn ein Eintrag null ist 😉 Aber ich meine die grobe Form.
 
Warum kein
Java:
Object[][] array = ...;
for (int i = 0; i < array.length; i++)
{
    for (int j = 0; j < array[i].length; j++)
        System.out.print( array[i][j].toString() + ", " );
    System.out.println();
}
...ok, es knallt wenn ein Eintrag null ist 😉 Aber ich meine die grobe Form.

Dann lass das "toString" weg, dann knallts nicht, wenn ein Eintrag null ist 😉 .
 
Schonmal danke für die schnelle Antwort.

Ich steh grade aber voll auf dem Schlauch...

Ich hab das Ganze jetzt so:
Java:
			for(int i=0; i <daten.length/6; i++){
					System.out.println("Gesammter ObjectArray: " + Arrays.toString(daten[i]));
			}
Die Formatierung der Ausgabe stimmt nun, also ich bekomm es als Matrix so angezeigt wie ich möchte, jedoch steht noch immer
Code:
[Ljava.lang.Object;@10b4199; [.......]
in der Ausgabe

Warum daten.length / 6? Wie schaut den die toString-Methode deiner Objekte aus? Die muss natürlich korrekt überschrieben sein!
 
So, ich hab hier doch noch n paar andere Probleme . . . vllt liegts daran.

Ich meld mich, sobald ich den Rest behoben hab.
 
Ich bin heute irgendwie unfähig ...

Nochmal von ganz vorne..

Ich hab eine ArrayList<String>, diese füll' ich mit nem Scanner mit Strings..
Diese Strings möchte ich dann in einem ObjektArray speichern (jaa, es dreht sich noch um das Problem von gestern 😛 )
Aber nochmal zur Erklärung: ich brauche einen Objektarray, da ich später auch ImageIcons (was ja nun zum glück funktioniert) drin speicher möchte.

Java:
		public Object[][] daten = null;

                  //[......]

        ArrayList<String> readIn =new ArrayList<String>();
		String wort = null; 
		
		try{
		  	Scanner sc =new Scanner(source);			

		  	while (sc.hasNext()) {
				wort = sc.next();
				readIn.add(wort);
			}
											
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	      daten = new Object[readIn.size()][];   		//Größe des Array's nach "Anzahl Wörter" 
			
			for (int j = 0; j<6; j++){				//Schleife so lang, wie es Spalten gibt		(6 ist vorgegben)
				int i =0;
				daten[i][j] = readIn.get(i);		//Strings werden eingefügt
				i++;			    
			}
Was mach ich denn falsch? ô.o

Achso: Ich bekomm eine NullPointerException in (hier) Zeile 24
 
Zuletzt bearbeitet:
lass das ganze doch mal durch den debugger laufen un schau dir an welche werte j & i durchlaufen un was in den positionen liegt, dann wird dir vllt deutlich wo dein fehler liegt 😉
 
Das wird glaube ich dein Fehler nicht beheben aber in der Schleife ist glaube ich schonmal etwas falsch. Und zwar erhöht sich i hier nicht. Dadurch das in der Schleife
Java:
int i = 0;
i immer wieder auf 0 zurückgesetzt wird.
Java:
for (int j = 0; j<6; j++){              //Schleife so lang, wie es Spalten gibt     (6 ist vorgegben)
                int i =0;
                daten[i][j] = readIn.get(i);        //Strings werden eingefügt
                i++;                
            }
 
ich komm einfach nicht dahinter -.-

Wird Zeit für Mittagspause und Feierabend .. Gestern hab ich das doch auch hinbekommen ..
 
Das wird glaube ich dein Fehler nicht beheben aber in der Schleife ist glaube ich schonmal etwas falsch. Und zwar erhöht sich i hier nicht. Dadurch das in der Schleife
Java:
int i = 0;
i immer wieder auf 0 zurückgesetzt wird.
Java:
for (int j = 0; j<6; j++){              //Schleife so lang, wie es Spalten gibt     (6 ist vorgegben)
                int i =0;
                daten[i][j] = readIn.get(i);        //Strings werden eingefügt
                i++;                
            }

ja da hast recht *an kopf klatsch* .. problem ist dadurch wirklich nicht behoben ..
 
Java:
daten = new Object[readIn.size()][];          //Größe des Array's nach "Anzahl Wörter" 
            
            for (int j = 0; j<6; j++){              //Schleife so lang, wie es Spalten gibt     (6 ist vorgegben)
                int i =0;
                daten[i][j] = readIn.get(i);        //Strings werden eingefügt
                i++;                
            }
Was soll dieser Code denn tun? Du liest deine Daten in eine ArrayList. Diese ist eindimensional. Danach willst du ein Object[][] befüllen, das ist zweidimensional ...hier ist schon einmal eine gewisse Diskrepanz.
Mit
Code:
daten = new Object[readIn.size()][];
erstellst du ein Array der Größe der ArrayList, dass an jeder Stelle ein Object[]-Typ erwartet. Aber da die zweite Dimension nicht angegeben ist, ist sie null. Der Zugriff in der Schleife
Code:
daten[i][j] = readIn.get(i);
geht also nicht, weil die j-Dimension hier null ist.

Du sagst im Kommentar, dass du 6 Spalten vorgegeben hast? Dann müsste deine Array doch wie folgt initialisiert werden:
Code:
daten = new Object[readIn.size()][[COLOR="Red"]6[/COLOR]];
Dann ist mir nicht klar, wo du die Eingaben aus der ArrayList hin haben willst ... bisher sieht dein Array nun so aus:
Code:
    0    1    2    3    4    5
0  null  null null null null null
1  null  null null null null null
...
n  null  null null null null null
//n == readIn.size()
 
Ich glaub ich hab's

Java:
		daten = new Object[readIn.size()/6][6];   		//Größe des Array's nach "Anzahl Wörter" 
		int k = 0;	
		for(int i = 0; i< readIn.size()/6;i++){
			for (int j = 0; j<6; j++){				//Schleife so lang, wie es Spalten gibt		(vorgegben)
				daten[i][j] = readIn.get(k);		//gesplitteter String wird in einzelne Felder je Zeile eingefügt   
				k++;
			}
		}

Die Mittagspause hat mir geholfen 🙂 Kopf is wieder frei 🙂
 
Zuletzt bearbeitet:
Hallo Zusammen,

ich habe mir schon viele Beiträge angeschaut, aber leider war der passenden nicht dabei.
Mein Problem ist, dass ich ein Arraylist habe vom Typ String[].
Wie kann ich nun dieses Arraylist<String[]> in einer ListBox Zeile für Zeile ausgeben?!

Mein bisheriger Quelltext:

public void onSuccess(ArrayList<String[]> result)
{
cbCenter.setEnabled(true); //Meine Listbox
for (int i=0; i<result.size(); i++) //Eine For-Schleife, damit Zeiel für Zeile eingelesen wird
{
result.get(i);
...
}
}
 
Hallo Zusammen,

ich habe mir schon viele Beiträge angeschaut, aber leider war der passenden nicht dabei.
Mein Problem ist, dass ich ein Arraylist habe vom Typ String[].
Wie kann ich nun dieses Arraylist<String[]> in einer ListBox Zeile für Zeile ausgeben?!

Mein bisheriger Quelltext:

public void onSuccess(ArrayList<String[]> result)
{
cbCenter.setEnabled(true); //Meine Listbox
for (int i=0; i<result.size(); i++) //Eine For-Schleife, damit Zeiel für Zeile eingelesen wird
{
result.get(i);
...
}
}

was ist eine listbox ? meinst du eine jlist oder um was geht es?

/edit: falls ja
Java:
		String[] elements1 = { "Hallo", "Welt" };
		String[] elements2 = { "JAVA", "Forum" };
		List<String[]> listElements = new ArrayList<String[]>();
		listElements.add(elements1);
		listElements.add(elements2);
		JList list = new JList();
		DefaultListModel model = new DefaultListModel();
		for (String[] strings : listElements) {
			for (String string : strings) {
				model.addElement(string);
			}
		}
		list.setModel(model);
oder soll ein array = eine zeile?

Java:
		StringBuilder builder = new StringBuilder();
		for (String[] strings : listElements) {
			for (String string : strings) {
				builder.append(string);
				builder.append(", ");
			}
			model.addElement(builder.toString());
			builder.delete(0, builder.length());
		}

oder direkt ein eigenes listmodel 🙂
 
Zuletzt bearbeitet:
Ich arbeite zusätzlich mit GWT.
Also ja, es soll ein jList sein.

Ich habe eine Datei mit mehreren Informationen angelegt, die auch mit Semikolons getrennt sind.
Mit der Funktion split() konnte ich mein Arraylist so aufteilen, dass die einzelnen Informationen getrent in Arrays stehen.
Beispiel:
1;Name;Adresse

Mein Arraylist<String[]> hat den Namen result und die Informationen stehen auch alle in result drin.
Wie kann ich dies nun in meine Listbox ausgeben?

Danke für eure Hilfe!!!
 
Ich arbeite zusätzlich mit GWT.
achsooo, die listbox aus dem gwt, okay. da musst du addItem(string); aufrufen
Java:
        StringBuilder builder = new StringBuilder();
        for (String[] strings : result) {
            for (String string : strings) {
                builder.append(string);
                builder.append(", ");
            }
            listbox.addItem(builder.toString());
            builder.delete(0, builder.length());
        }
(dürfte gehen)
Also ja, es soll ein jList sein.

???:L
 
Zuletzt bearbeitet:
Danke für eure Hilfe!!!
Ich hab die Lösung gefunden.

Beispiel:
for (int i=0; i<result.size(); i++)
{
listbox.addItem( result.get(i)[2] );
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben