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?
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:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class Data {
private static File tileFolder = new File("data");
private static ArrayList<File> existingTiles = new ArrayList<File>();
private static ArrayList<int[]> scannedTiles = new ArrayList<int[]>();
static void checkForFiles() {
if (!tileFolder.exists()){
tileFolder.mkdir();
}
//Es werden 100 potentielle Files gescannt
for (int i = 0; i < 100; i++) {
existingTiles.add(new File("data/tile"+i+".snake"));
if (existingTiles.get(i).exists()) {
//scan it
try {
Scanner sc = new Scanner(existingTiles.get(i));
String inhalt = sc.nextLine();
String[] inhaltGespalten = inhalt.replaceAll("\\[", "").replaceAll("\\]", "").replaceAll(" ", "").split(",");
int[] inhaltAlsInt = new int[inhaltGespalten.length];
for (int j = 0; j < inhaltGespalten.length; j++) {
try{
inhaltAlsInt[j] = Integer.parseInt(inhaltGespalten[j]);
} catch (NumberFormatException nfe) {
System.out.println("Es gibt einen Fehler!");
};
}
scannedTiles.add(inhaltAlsInt);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
public static int[] getSubField() {
return scannedTiles((int)(Math.random()*scannedTiles.size()));
}
}