dimanche 10 mai 2015

Dateien lesen | IndexOutOfBoundsException

Hey Leute, ich wollte in der folgenden Klasse Datein einlesen, die int[] enthalten.

Beim Aufruf der Klasse soll der Inhalt einer zufälligen Datei als int[] zurückgeben.
Das scannen der Datei funktioniert auch Problemlos (glaube ich), aber die rückgabe funktioniert leider nicht.

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at Data.getSubField(Data.java:79)

Wisst ihr wie ich das Problem lösen kann?

Java Code:

  1.  
  2.  
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.util.ArrayList;
  6. import java.util.Scanner;
  7.  
  8. public class Data {
  9.  
  10. private static File tileFolder = new File("data");
  11. private static ArrayList<File> existingTiles = new ArrayList<File>();
  12. private static ArrayList<int[]> scannedTiles = new ArrayList<int[]>();
  13.  
  14.  
  15.  
  16. static void checkForFiles() {
  17.  
  18. if (!tileFolder.exists()){
  19. tileFolder.mkdir();
  20. }
  21. //Es werden 100 potentielle Files gescannt
  22. for (int i = 0; i < 100; i++) {
  23. existingTiles.add(new File("data/tile"+i+".snake"));
  24.  
  25. if (existingTiles.get(i).exists()) {
  26. //scan it
  27. try {
  28. Scanner sc = new Scanner(existingTiles.get(i));
  29. String inhalt = sc.nextLine();
  30. String[] inhaltGespalten = inhalt.replaceAll("\\[", "").replaceAll("\\]", "").replaceAll(" ", "").split(",");
  31. int[] inhaltAlsInt = new int[inhaltGespalten.length];
  32. for (int j = 0; j < inhaltGespalten.length; j++) {
  33. try{
  34. inhaltAlsInt[j] = Integer.parseInt(inhaltGespalten[j]);
  35. } catch (NumberFormatException nfe) {
  36. System.out.println("Es gibt einen Fehler!");
  37. };
  38. }
  39. scannedTiles.add(inhaltAlsInt);
  40. } catch (FileNotFoundException e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. }
  45. }
  46.  
  47.  
  48.  
  49.  
  50. public static int[] getSubField() {
  51.  
  52.  
  53. return scannedTiles((int)(Math.random()*scannedTiles.size()));
  54.  
  55. }
  56.  
  57.  
  58.  
  59. }


Dateien lesen | IndexOutOfBoundsException

0 commentaires:

Enregistrer un commentaire