我有它的一些信息,它看起来像下面显示的一个文本文件。 我应该读取文件时发生之后的特定词( 完整组 ),像在阵列中的垂直对齐值中的每一行存储(可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
我曾尝试
我能够读取只有一行数字的和不知道如何垂直数字相加。
任何帮助表示赞赏。
嗯,实际上是在这里没有问题。 你只需要编写它。 还有的代码在这一些不错的作品线程 。 做这样的事情:
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();
使用BufferedReader
来封装FileReader
上的文件,然后使用nextLine()
来读取每一行。 创建Pattern
与正则表达式对象".*Complete Population.*"
,并使用Matcher
上Pattern
,以检查各线路(条件循环的BufferedReader
的nextLine()
没有返回null -因为null指示结束文件到达。)当线匹配时,开始处理后续行,以形成阵列。
我不知道你所说的“垂直排列的值”的意思,但如果你的意思是在每行作为一个数组的空间分隔值,使用String.split("\\s+");
在每行分裂上的空白,返回字符串的数组。
如果通过垂直阵列,就意味着在各行,则在各行中的第二元素,依此类推的第一元件:可以存储由检索字符串的这些阵列String.split("\\s+")
ING每条线一起作为一个2-d阵列通过将每个阵列成主阵列这将保持它们的所有(每行的字符串的数组的数组),然后,当全读入完成和文件的结束是达到,返回到这个2-d阵列和接入元件的每一行的[0]以获得在每一行的第一项的列表,元素每行的[1]〜得到每行的第二项的列表,等等。 如果你愿意,你可以存储这些在另一组阵列(上线项目的有效垂直列表)。