Ваш код не может работать, потому что когда вы делаете page2[i] = xxx
, переменная с именем i
должна принимать значение от 0 до 6, а ее значение изменяется от 8 до 15. То же самое для других страниц.Даже страница 1 не будет работать, потому что последний индекс, который вы используете, равен 7, что не находится в диапазоне 0-6.
Попробуйте что-то вроде:
for (int i=0; i<listOfFiles.length; i++)
{
if(i>=0 && i<7)
{
page1[i] = listOfFiles[i].getName();
}
else if(i>=7 && i<15)
{
page2[i-7] = listOfFiles[i].getName();
}
else if(i>=16 && i<23)
{
page3[i-16] = listOfFiles[i].getName();
}
...
}
Надеюсь, вы поняли идею.Даже если ваш код немного уродлив в обслуживании, вам следует подумать о том, как определить только один двумерный массив и использовать оператор модуля (%
) для более простого доступа к нему и с меньшим количеством кода.
Следующий код не протестирован, но я надеюсь, что он поможет вам:
int NUM_PAGES = 7;
File folder = new File("c:/files");
File[] listOfFiles = folder.listFiles();
String[][] pages = new String[NUM_PAGES][listOfFiles.length/NUMPAGES];
for (int i=0; i<listOfFiles.length; i++) {
int currentPage = i % 7;
int currentPosition = pages[currentPage].length;
pages[currentPage][currentPosition] = listOfFiles[i].getName();
}
Вы также можете использовать Java-коллекции, которые еще больше упростят ваш код;