我有三个文本文件,必须按顺序加载它们,而不是加载当前加载的文件和以前加载的文本文件。
data1.txt
Name Score
Leslie 25
Pat 12
Alfred 32
data2.txt
Name Score
Leslie 35
Keith 22
Alfred 12
data3.txt
Name Score
Philip 38
Keith 32
Diop 22
预期产出
Current Scores : 38, 32, 22
Current Names : Philip, Keith, Diop
Previous Scores : 35, 22,12
Previous Names : Leslie, Keith, Alfred
这是为此而编写的代码。它没有给我预期的结果:
List<String> name = new ArrayList<String>();
List<String> currentscore = new ArrayList<String>();
List<String> prevscore = new ArrayList<String>();
String path = "C:........../question/";
String textfile;
File folder = new File(path);
File [] listOfFiles = folder.listFiles(new FilenameFilter(){
@Override
public boolean accept(File folder, String name){
return name.endsWith(".txt");
}
});
for (int ixa=0; ixa<listOfFiles.length; ixa++){
textfile = listOfFiles[ixa].getName();
String inputfile = textfile;
FileReader fr1 = new FileReader(inputfile);
BufferedReader bfr1 = new BufferedReader(fr1);
String aLine1;
while ((aLine1 = bfr1.readLine()) != null) {
String[] split = aLine1.split("\t");
name.add(split[0]); currentscore.add(split[1]);
}
System.out.println(name);System.out.println("Current Scores are" + currentscore);
System.out.println("Previous Scores are" + prevscore);
prevscore = currentscore;
currentscore.clear();
name.clear();
}
答案 0 :(得分:1)
编程问题
bfr1.close()
循环后使用while
,或者最好使用&#34;尝试使用资源&#34;打开文件。File
对象本身而不是名称。您指定了prevscore = currentscore
,但随后清除了currentscore
。注意 - 当您指定一个对象时,您没有指定它的副本。您只是将对同一对象的引用放入prevscore
。这意味着当您清除它时,它也会在prevscore
中清除。你应该做的是:
prevscore = currentscore;
currentscore = new ArrayList<String>();
这意味着prevscore
现在指向曾经currentscore
的内容,但现在currentscore
指向一个新的空对象。
逻辑问题