OutOfBoundsException

Supra

Bekanntes Mitglied
Java:
Moin ich lerne java und bin grade bei Dateien lesen.
Mein code:
[code=Java]
import java.util.*;
import java.io.*;
class ReadFile
{

    public static void main(String[] args)throws IOException
    {
        String[] kundenDaten;
        try
        {
            String kundenLine;

            BufferedReader bfr = new BufferedReader(new FileReader("kundenstamm.csv"));
            while((kundenLine = bfr.readLine()) != null)
            {
                
                    kundenDaten = kundenLine.split(";");
                    System.out.println(kundenDaten[1]);
  
            }
        }
        catch(FileNotFoundException e)
        {
        }
    }
}

Beispiele für eine Kundendatei:

--Kommentar
100000000;Mustermann;Peter
100000001;Peter;Otto
100000002;Meyer;Erna

Das problem ist wenn ich mir position[1] ausgeben lasse kriege ich eine Fehlermeldung "outOfBounds...", aber "[0]" würde gehen kann mir einer bischen helfen? Es geht halt darum aus Dateien zu lesen, Kunden zu entfernen etc.
Wäre nett :).
 

Supra

Bekanntes Mitglied
Ja sry hätte ich zuschreiben müssen, das hab ich auch mitbekommen aber ich kriege das nicht hin zu umgehen :S.
 

Michael...

Top Contributor
Du musst ja nur, z.B. mittels equals, contains, startsWidth... überprüfen ob die Zeile eine Kommentarzeile ist und in dem Fall ignorieren.
 

Supra

Bekanntes Mitglied
Habe mir sowas wie
Code:
if(kundenLine == null)
dann soll er nichts machen, sowas in der richtung aber das funktioniert nicht :S
 

Michael...

Top Contributor
Habe mir sowas wie
Code:
if(kundenLine == null)
dann soll er nichts machen, sowas in der richtung aber das funktioniert nicht :S
Die Überprüfung auf null hast Du doch bereits im Kopf der while Schleife. Du musst doch jetzt doch nur noch sicherstellen, dass kundenLine keine Kommentarzeile ist.
 

Supra

Bekanntes Mitglied
Achso, habe gedachte das steht für ende der Datei. Also sicherlich weis ich was null ist aber ich habe zwischen den Daten auch eine leere Zeile würde er die while schleife dann nicht abbrechen weil die bedinung dann nicht mehr stimmt? Was er aber nich tut.
 

Michael...

Top Contributor
Achso, habe gedachte das steht für ende der Datei. Also sicherlich weis ich was null ist aber ich habe zwischen den Daten auch eine leere Zeile würde er die while schleife dann nicht abbrechen weil die bedinung dann nicht mehr stimmt? Was er aber nich tut.
Versteh jetzt nicht was die Fragestellung mit dem Problem zu tun hat. Vermutlich verstehe ich die Frage gar nicht.
Die while Schleife läuft solange bis es nichts mehr zu lesen gibt, im Falle einer txt Datei bis zur letzten Zeile. In in dem Code des ersten Postings passt die Schleife. Jetzt musst Du nur noch eine Fallunterscheidung in der Schleife einfügen. Eine Leerzeile ist nicht null sondern ""
 

Supra

Bekanntes Mitglied
Java:
if(kundenLine.equals("-")||kundenLine.equals(""))
{
}
else
{
kundenDaten = kundenLine.split(";");
System.out.println(kundenDaten[1]);
}
Also so habe ich jetzt gedacht wenn die if bedingung stimmt dann soll er nix machen, aber ich glaube ich bin auf dem falschen weg.
 

Marco13

Top Contributor
So, wie es am Anfang war, aber nach dem "split" ein
Java:
if (kundenDaten.length != 2)
{
    System.out.println("Aaaaahhh, da steht was falsches: '"+kundenLine+"' *flenn* ");
}
else
{
    ...
}
könnte schon reichen
 

ssoul26

Bekanntes Mitglied
Java:
if(kundenLine.contains(";")){
kundenDaten = kundenLine.split(";");
for(String temp : kundenDaten){
System.out.println(temp);
}
}

Läuft das fehlerfrei durch? Überprüf einfach auf das Vorkommen von ";".
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> if(kundenLine.equals("-")||kundenLine.equals(""))

ginge ansonsten nur für genau zwei bestimmte Zeilen,
gibt ja auch anderen Code, etwa startsWith("-")
 

Supra

Bekanntes Mitglied
Ah ok ssoul26 sieht so aus als enn es klappen würde, das mit dem contains kenn ich noch nicht, nur mal gesehen :). und danke SlaterB das startswuth guck ich auch nochmal an.
 

Ähnliche Java Themen

Neue Themen


Oben