我如何完成上述任务?我一直试图做的是将页面分成不同的数组,但是失败了很多。
按要求编码(甚至不接近工作)
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();
}
}
答案 0 :(得分:1)
这可能会对您有所帮助:
答案 1 :(得分:0)
您的代码无效,因为当您执行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();
}
...
}
我希望你明白这个主意。即使这样你的代码维护起来有点难看,你应该考虑如何只定义一个二维数组,并使用模数(%
)运算符以更简单的方式和更少的代码访问它。 / p>
以下代码未经测试,但我希望它可以指导您:
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集合来进一步简化代码;