Прочитайте текстовый файл и создайте «страницу» каждые 7 строк - PullRequest
0 голосов
/ 29 сентября 2011

Как я могу выполнить задачу выше? То, что я пытался сделать, это разделить страницы на разные массивы, но ужасно не получилось.

Код по запросу (даже не близко к работе)

    int a = 1; int b = 5;
    File folder = new File("c:/files");
    File[] listOfFiles = folder.listFiles();
    String[] page1 = new String[7];
    String[] page2 = new String[7];
    String[] page3 = new String[7];
    String[] page4 = new String[7];
    String[] page5 = new String[7];
    String[] page6 = new String[7];
    int c = 0;
    for (int i = 0;i<listOfFiles.length; i++)
    {
        if(i>=0 && i <= 7)
        {
            page1[i] = listOfFiles[i].getName();
        }
        else if(i>=8 && i<=15)
        {
            page2[i] = listOfFiles[i].getName();
        }
        else if(i>=16 && i<=23)
        {
            page3[i] = listOfFiles[i].getName();
        }
        else if(i>=24 && i<=31)
        {
            page4[i] = listOfFiles[i].getName();
        }
        else if(i>=32 && i<=39)
        {
            page5[i] = listOfFiles[i].getName();
        }
    }

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Это может помочь вам:

0 голосов
/ 29 сентября 2011

Ваш код не может работать, потому что когда вы делаете 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-коллекции, которые еще больше упростят ваш код;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...