ArrayIndexOutOfBoundsException - Warum?

TheFusion998

Grünschnabel
Hallo! ;)

Das ist die Methode in der es knallt:

Code:
private Map<Integer, Item> readPriceFile(String fileName) {

        Map<Integer, Item> itemMap = new HashMap<Integer, Item>();
        BufferedReader br = null;

        try {
            br = new BufferedReader(new FileReader(new File(fileName)));
            String line = null;
            while ((line = br.readLine()) != null) {
                String[] parts = line.split(";");
                itemMap.put(new Integer(parts[1]), new Item(parts[0], Integer.parseInt(parts[1]), Integer.parseInt(parts[2])));
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return itemMap;

    }

Ausgelesen wird eine txt-Datei die in jeder Zeile so aufgebaut ist: String;Zahl1;Zahl2

Ich bekomme jedesmal diese Exception (ich schreibe ein plugin für minecraft bukkit):

2011-06-23 20:15:19 [SEVERE] java.lang.ArrayIndexOutOfBoundsException: 1
2011-06-23 20:15:19 [SEVERE] at me.theFusion998.mineMoney.file.FileManager.readPriceFile(FileManager.java:292)
2011-06-23 20:15:19 [SEVERE] at me.theFusion998.mineMoney.file.FileManager.buyItem(FileManager.java:247)
2011-06-23 20:15:19 [SEVERE] at me.theFusion998.mineMoney.main.MineMoney.onCommand(MineMoney.java:133)
2011-06-23 20:15:19 [SEVERE] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:35)
2011-06-23 20:15:19 [SEVERE] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:129)
2011-06-23 20:15:19 [SEVERE] at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:294)
2011-06-23 20:15:19 [SEVERE] at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:714)
2011-06-23 20:15:19 [SEVERE] at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:680)
2011-06-23 20:15:19 [SEVERE] at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:673)
2011-06-23 20:15:19 [SEVERE] at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:32)
2011-06-23 20:15:19 [SEVERE] at net.minecraft.server.NetworkManager.b(NetworkManager.java:223)
2011-06-23 20:15:19 [SEVERE] at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:75)
2011-06-23 20:15:19 [SEVERE] at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
2011-06-23 20:15:19 [SEVERE] at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:431)
2011-06-23 20:15:19 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:341)
2011-06-23 20:15:19 [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)

Wenn ich bei dem " itemMap.put(new Integer(parts[1])..." ein System.out mache wird die ganze Datei korrekt ausgegeben. Wie kann es dann knallen? :(

bitte helft mir...
 
Hi und Willkommen bei tutorials.de :)

Du solltest das itemMap.put in ein if packen, ob parts auch wirklich min. 3 Elemente hat.
So bekommst du die genannte Exception, wenn weniger drin sind
(vor allem beim Dateiende einmal möglich oder Leerzeilen etc.)

Wenn die "ganze" Datei mit einer Ausgabe richtig ausgegeben wird,
wird wahrscheinlich das Dateiende das Problem sein.

Gruß
 
Zurück