我有一个包含一些信息的文本文件,看起来如下所示。 我应该在特定单词出现后读取文件(完整填充),并将每个行中的垂直对齐值存储在数组中(也可以是arraylist)
文件的样子 -
Tue May 14 08:27:25 EST 2013
mating_pool=80
mutation_dist=3
algo_name=ARMO
完整人口
8.78792396E8 7.45689508E8 8.37899916E8 9.52778502E8 8.47061622E8
8.80017166E8 7.50224432E8 8.23658404E8 9.51664198E8 8.49145008E8
8.85724416E8 7.48191542E8 7.61295532E8 1.00892758E9 8.52389824E8
8.96069156E8 7.11234404E8 7.68007126E8 9.7238065E8 8.5759227E8
8.96193522E8 7.11177522E8 7.67777526E8 9.72449466E8 8.5763106E8
8.95546766E8 7.1112849E8 7.68311754E8 9.71998374E8 8.57960886E8
8.95480802E8 7.11023308E8 7.68223532E8 9.72097758E8 8.5803376E8
8.9549393E8 7.11015392E8 7.68194136E8 9.72079838E8 8.5804897E8
8.95467666E8 7.11364074E8 7.68318732E8 9.7189094E8 8.58053462E8
8.95574386E8 7.11095656E8 7.68187948E8 9.71985272E8 8.58095624E8
8.95390774E8 7.11052654E8 7.684207E8 9.72098718E8 8.58105648E8
我尝试了什么
我只能读取一行数字而不确定如何垂直添加数字。
感谢任何帮助。
答案 0 :(得分:2)
嗯,这里确实没有问题。你只需要编码就可以了。 这个thread中有一些很好的代码片段。 做这样的事情:
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
if (line.contains("Complete Population"){
// do something
break; // breaks the while loop
}
}
// we reached the section with numbers
while ((line = br.readLine()) != null) {
// use String.split to split the line, then convert
//the values to double and process them.
}
}
br.close();
答案 1 :(得分:0)
使用BufferedReader
将FileReader
打包到文件上,然后使用nextLine()
读取每一行。
使用正则表达式Pattern
创建".*Complete Population.*"
对象,并使用Matcher
上的Pattern
检查每一行(循环使用BufferedReader
' s nextLine()
不返回null - 因为null表示文件已到达。)
当一行匹配时,开始处理后续行以形成数组。
我不确定您的意思是"垂直对齐的值",但如果您将每行的空格分隔值表示为数组,请使用String.split("\\s+");
on每行在空格上拆分,返回一个字符串数组。
如果是垂直数组,则表示每行上的第一个元素,然后是每行上的第二个元素,依此类推:
您可以将每个行String.split("\\s+")
检索到的这些字符串数组存储为一个二维数组,方法是将每个数组放入一个主数组中,该数组将保存所有数组(每行数组的数组),以及然后,当完成完整读入并到达文件结尾时,返回到这个二维数组并访问每一行的元素[0]以获得每行上第一个项目的列表,元素[1]每行获取每行的第二项列表,依此类推。如果需要,可以将这些(有效的垂直项目列表)存储在另一组数组中。