繁体   English   中英

读取文本文件,然后每7行创建一个“页面”

[英]Read a text file and create a 'Page' every 7 lines

我如何完成上述任务? 我一直想做的是将页面分成不同的数组,但是失败了。

根据要求进行编码(甚至无法正常工作)

    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();
        }
    }

这可能对您有帮助:

您的代码无法正常工作,因为在执行page2[i] = xxx ,名为i的变量的值应介于0到6之间,并且其值从8到15。其他页面也是如此。 即使page1也会失败,因为您使用的最后一个索引是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集合来进一步简化代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM