2D Array auslesen gibt nur letzten Wert aus

Pagaty

Mitglied
Hallo,

beim versuch ein 2D Array auszulesen habe ich ein Problem.

Es wird immer nur der letzte Wert im Array ausgegeben und ich bekomme folgende Fehlermeldung:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at ohnegui.read.main(read.java:57)


Java:
        for (int zeile = 0; zeile < meinInteger; zeile++)
        //{System.out.println("in ausgabe schleife 1");}
        {
            for (int spalte = 0; spalte < array[zeile].length; spalte++){
            	System.out.println("in ausgabe schleife 2");
                System.out.print( array[zeile][spalte] + " ");
                System.out.println("in ausgabe schleife 3");
            }
        }

meinInteger ist die Anzahle der Zeilen.

Dies ist die Ausgabe von Eclipse

Code:
in ausgabe schleife 2

    iii
   in ausgabe schleife 3
in ausgabe schleife 2
9 in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
in ausgabe schleife 2
null in ausgabe schleife 3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
	at ohnegui.read.main(read.java:57)

Weis jemand wo mein Denkfehler liegt?

Danke im Voraus

Pagaty
 
B

bone2

Gast
meinInteger ist wahrschienlich größer als array.length

er gibt doch eine 9 und dann null saus, ist das array größtenteils leer?

mach mal
Code:
Syso(Arrays.toString(array))
udn schau dir an wie dein array aussieht
 

Pagaty

Mitglied
Hallo,
mach mal Syso(Arrays.toString(array))
gibt folgendes aus
Code:
[[Ljava.lang.String;@1e5a5dc, [Ljava.lang.String;@1ec41c0]


meinInteger habe ich genommen um die geaue länge des Arrays zu haben, mit der ich das Array erzeugt habe.
Habe mal in array.length getauscht, aber keine Änderung erreicht.

Damit ist das Array erzeugt worden
Java:
        List methods = datei.getRootElement().getChildren("Zeitstempel"); 
        int countMethods = methods.size();
        Integer meinInteger = new Integer(countMethods);
        
        String[][] array = new String[2][meinInteger];
        Iterator itr = datei.getRootElement().getChildren("Zeitstempel").iterator();
        
        for (int zeile=0; zeile<meinInteger; zeile++){
        	while (itr.hasNext()) {
	            Element elem = (Element) itr.next();
	            //System.out.println(elem.getText());
	            //System.out.println(elem.getAttributeValue("ID"));
	            array[zeile][0]=elem.getText();
	            array[zeile][1]=elem.getAttributeValue("ID");
	            System.out.println(array[zeile][0]);
	            System.out.println(array[zeile][1]);
	        }
        }

hier gibt er die Werte noch aus
Code:
    aaa
  
1

    bbb
  
2

    ccc
  
3

    ddd
  
4

    eee
  
5

    fff
  
6

    ggg
  
7

    hhh
  
8

    iii
  
9

Ich weis nicht, wo die Leerzeilen herkommen. Kann es damit zusammenhängen?

Danke Pagaty
 
S

SlaterB

Gast
> Leerzeilen

untersuche doch, was elem.getText() usw. ist, da scheinen die Leerzeilen mit dabei zu sein,
einfach nicht riesen große Schleifen bauen, alles gleichzeitig ausgeben und das Durcheinander nicht mehr zu durchblicken,
sondern in aller Ruhe mit einem Wert anfangen

du schreibst übrigens alle Elemente in array[0][0] + array[0][1] für zeile == 0,
am Ende hast du maximal zwei Werte gespeichert, der Rest ist überschrieben,
nachdem itr fertig ist und die for-Schleife 1x weitergeht, ist itr immer noch leer

> new String[2][meinInteger]
soll sicherlich
> new String[meinInteger][2]
sein

achte genau in welchen Dimensionen du welche Wertebereiche als Indexe verwendest
 
T

TryToHelp

Gast
Java:
        for (int zeile=0; zeile<meinInteger; zeile++){
        	while (itr.hasNext()) { //<---- Das hier ist dein Problem
	            Element elem = (Element) itr.next();
	            //System.out.println(elem.getText());
	            //System.out.println(elem.getAttributeValue("ID"));
	            array[zeile][0]=elem.getText();
	            array[zeile][1]=elem.getAttributeValue("ID");
	            System.out.println(array[zeile][0]);
	            System.out.println(array[zeile][1]);
	        }
        }

Du schreibst in dein ersten eintrag des Arrays (also array[0][1]) insgesammt 9 mal und zwar erst 1, dann 2, dann 3, ... bis 9 und in (also array[0][0]) schreibst du aaa dann bbb dann ccc ... bis iii in die felder array[1][0] ... schreibst du nur null
 
T

TryToHelp

Gast
Probier mal sowas

Java:
for (int zeile=0; zeile<meinInteger; zeile++){
            if (itr.hasNext()) {
                Element elem = (Element) itr.next();
                //System.out.println(elem.getText());
                //System.out.println(elem.getAttributeValue("ID"));
                array[zeile][0]=elem.getText();
                array[zeile][1]=elem.getAttributeValue("ID");
                System.out.println(array[zeile][0]);
                System.out.println(array[zeile][1]);
            }else{
                 array[zeile][0]="gab nix zu lesen"
                array[zeile][1]="-1";
                System.out.println(array[zeile][0]);
                System.out.println(array[zeile][1]);
            }
        }
 

Pagaty

Mitglied
Hallo,
untersuche doch, was elem.getText() usw. ist, da scheinen die Leerzeilen

Simmt habe jetzt
Code:
array[zeile][0]=elem.getTextTrim();
verwendet, und die Leerzeilen sind weg. Danke

achte genau in welchen Dimensionen du welche Wertebereiche als Indexe verwendest

Gesten abend kam mir die Erkenntnis, das es echt wichtig ist immer genau zu wissen "wo" man sich gerade befindet. Da muss ich wohl noch viel üben.
Habe es getauscht.

@bone2
Die Ausgabe ist jetzt
Code:
[iii, 9][null, null]
Die Daten sind nicht da !!! Gut zu wissen

Du schreibst in dein ersten eintrag des Arrays (also array[0][1]) insgesammt 9 mal

Hmm...
Ich hab mir das so gedacht:
Die for schleife "erezugt" die Zeilen, daher zeilen<meinInteger
Wenn die erste Zeile [0] erzeugt wurde schreibt er solange etwas ins array[0][solange itr ist],
dann geht es wieder in die for-Schleife [1] und so weiter.

Sorry für die Dumme Frage, aber steht das so nicht da?
Offensichtlich nicht, sonst würde es ja funktionieren.
Wo liegt mein Logikproblem?


//EDIT

Die if/else Anweisung funktioniert!

Es wird alles richtig ausgegeben.
"gab nix zu lesen" erscheint nirgends, aber es funktioniert.

Das ist zwar schön, aber ich verstehe noch nicht warum.
Der else Block kommt doch garnicht zur Ausführung. Oder doch?

Vielen Dank erst mal !!!

Pagaty
 

Pagaty

Mitglied
Vielen Dank an alle die mir geholfen haben.

Ich konnte durch die Tipps einiges ausmerzen.
Voraussichtlich war das Hauptproblem die vertauschten indexe.

Woran ich noch knabbere ist, das ich jetzt noch mal um zu testen die if Anweisung gegen die while getauscht habe und es auch funktionierte.
Vorher hatte ich die indexe getauscht und es ging nicht.

Aber das ist nichts was hier gelöst werden muss.

Vielen Dank noch mal
 
T

TryToHelp

Gast
Ja der else Block kommt nicht außer du erhöst deine Zahl der zu lesenden Zeilen ohne die Zeilen zu erhöhen ;-) (Also sollte nicht kommen) [Also das if kann man auch weg lassen, das ist nicht nötig]

Dein Ansatz ist schon richtig, nur halt leider nicht ganz. Du müsstest über deinen iterator außen iterieren und dann innen über dein Array, aber da dein Array ja nur begrenzt Platz hat, ist das auch doof, bei einer Liste aber ok.

So z.B.
Java:
int zeile=0;
   while (itr.hasNext()) {
                Element elem = (Element) itr.next();
                array[zeile][0]=elem.getText();
                array[zeile][1]=elem.getAttributeValue("ID");
                System.out.println(array[zeile][0]);
                System.out.println(array[zeile][1]);
                zeile++;
            }
Jedoch kann es so bei einer zu langen eingabe dazu führen, das du eine outOfBounds Exception bekommst, deswegen lieber eine Liste.

Java:
   Liste myListe=new ArrayList();
   while (itr.hasNext()) {
                String[] array=new String[2];
                Element elem = (Element) itr.next();
                array[0]=elem.getText();
                array[1]=elem.getAttributeValue("ID");
                System.out.println(array[0]);
                System.out.println(array[1]);
                myList.add(array);
            }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T array auslesen Java Basics - Anfänger-Themen 2
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
B Datei auslesen und 2D-Array anlegen Java Basics - Anfänger-Themen 1
Voreck Array aus txt datei auslesen Java Basics - Anfänger-Themen 2
J Integer-Werte in Array ein- bzw. auslesen Java Basics - Anfänger-Themen 7
M Array mit Objekten lässt sich nicht auslesen Java Basics - Anfänger-Themen 10
B String auslesen und Stellen im Array speichern Java Basics - Anfänger-Themen 1
S Rückgabe-Array lässt sich nicht auslesen, LocalDate mit String Java Basics - Anfänger-Themen 3
M Erste Schritte float-Array auslesen Java Basics - Anfänger-Themen 4
O Auslesen von .csv Datein in ein Klassen Array Java Basics - Anfänger-Themen 6
J Methoden Einzelnen Wert aus Objekt aus einem Array auslesen und danach sortieren Java Basics - Anfänger-Themen 8
E array; daten aus txt auslesen Java Basics - Anfänger-Themen 5
D Array auslesen und und Werte in ein anderes array anlegen Java Basics - Anfänger-Themen 5
S array auslesen Java Basics - Anfänger-Themen 6
J Variablen Array aus anderer Klasse auslesen-Wie verhindert man eine NullPointerException? Java Basics - Anfänger-Themen 4
Z Datei auslesen und in 2dim Array packen. Java Basics - Anfänger-Themen 27
S Werte aus Array auslesen über Variableninhalt Java Basics - Anfänger-Themen 2
O Erste Schritte Array auslesen, ... Java Basics - Anfänger-Themen 6
E Erste Schritte Verzeichnis auslesen, Dateinamen in Array speichern :-( Java Basics - Anfänger-Themen 7
K String auslesen aus array Java Basics - Anfänger-Themen 3
C Array rückwärts auslesen Java Basics - Anfänger-Themen 4
E Array auslesen in GUI Java Basics - Anfänger-Themen 8
M Datei auslesen und Array schreiben?! Java Basics - Anfänger-Themen 8
S Datentypen Array in Textdatei speichern und auslesen Java Basics - Anfänger-Themen 16
K Inhalt eines Elements aus dem Objekt Array auslesen Java Basics - Anfänger-Themen 9
F OOP Objekt Array auslesen Java Basics - Anfänger-Themen 9
J 2-dim Array auslesen und in Datei schreiben Java Basics - Anfänger-Themen 10
D Array Elemente auslesen Java Basics - Anfänger-Themen 14
G Bestimmte Position im array auslesen Java Basics - Anfänger-Themen 8
P Array index per char suche auslesen Java Basics - Anfänger-Themen 3
A bilddateinamen aus array auslesen und bild darstellen? Java Basics - Anfänger-Themen 2
B Java Array List größe auslesen zur Suchfunktion Java Basics - Anfänger-Themen 5
N String/char-array aus datei auslesen Java Basics - Anfänger-Themen 2
W Array auslesen? Java Basics - Anfänger-Themen 11
B String-Array in Datei speichern und wieder auslesen Java Basics - Anfänger-Themen 3
M Array - eine Variable auslesen Java Basics - Anfänger-Themen 4
G CSV auslesen und Zeilen in Array speichern Java Basics - Anfänger-Themen 13
G Array werte auslesen Java Basics - Anfänger-Themen 6
J array in for-Schleife auslesen? Java Basics - Anfänger-Themen 6
N Array aus JCheckBox? 1000 if's UPDATE: Spaltennamen auslesen Java Basics - Anfänger-Themen 12
S byte-array bitweise auslesen Java Basics - Anfänger-Themen 14
G Daten aus einem Array auslesen Java Basics - Anfänger-Themen 2
S Aus Array auslesen (HTML u.JSP). Wie! Java Basics - Anfänger-Themen 2
P String aus Zahlen auslesen und in einem Array speichern Java Basics - Anfänger-Themen 3
B Array auslesen das als Objekt geliefert wurde Java Basics - Anfänger-Themen 2
G Txt auslesen... Inhalt in ein Array speichern Java Basics - Anfänger-Themen 8
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben