W moim mainie wywołuję sobie metody loadDbDir() i LoadDb()...
public static void main(String[] args)
{
Files.loadDbDir();
Files.loadDb(Files.dbDir[0], 0);
}//koniec konstruktora main
...które w klasie Files wyglądają tak:
public static int dbSize = 5; //wielkość bazy danych postaci
public static String[] dbDir = new String[dbSize];
public static void loadDbDir() //wczytaj do tabeli ścieżki plików z informacjami o postaciach
{
dbDir[0] = "src\\Dane\\_16.txt";
dbDir[1] = "src\\Dane\\_26.txt";
dbDir[2] = "src\\Dane\\_40.txt";
dbDir[3] = "src\\Dane\\_42.txt";
dbDir[4] = "src\\Dane\\_44.txt";
}
public static int dbNumbersCount = 6; //ilość danych typu int na postać
public static int[][] dbNumbers = new int[dbSize][dbNumbersCount]; //tabela z danymi typu int; każda postać w osobnej kolumnie
public static void loadDb(String db, int j) //Wczytaj bazę danych postaci; String db - wybierz który plik odczytać, zmienna i przechowuje numer pliku w bazie
{
try
{
BufferedReader br = new BufferedReader(new FileReader(db));
String textLine = br.readLine(); //odczytaj linię i zapisz do zmiennej
int i = 0;
while(i < 6) //czytaj tylko pierwsze 6 linii
{
dbNumbers[i][j] = Integer.parseInt(textLine); //wsadź do tablicy
i++; //inkrementuj wiersz tablicy
textLine = br.readLine(); //odczytaj kolejną linię i nadpisz zmienną
}
br.close(); //zamknij strumień
}
catch (Exception e)
{
System.err.println("Wystąpił błąd przy wczytywaniu pliku bazy danych");
e.printStackTrace();
}
}//koniec metody loadDb
Problem polega na tym, że podczas uruchomienia programu rzuca zaimplementowany wyżej wyjątek i krzyczy, że "java.lang.ArrayIndexOutOfBoundsException: 5", wskazując na:
- linię wywołania metody Files.loadDb w mainie,
- linię gdzie odczytane z pliku i przekonwertowane stringi próbuję zapisać do tablicy dwuwymiarowej w klasie Files (początek pętli while).
Pomoże ktoś mi ogarnąć, gdzie ja tutaj przekraczam rozmiary tablicy? Rozwiązanie pewnie jest oczywiste, ale mam totalną pustkę na ten moment.