我想要最好的方法来继续读取txt文件中的行并将它们保存到变量中以便以后处理 我知道如何编码它,但我不能想到保存字符串的最佳方法,例如变量或其他东西,并在我到达最后处理它们 编辑:
Scanner in = new Scanner(new FileReader(filename));
while(in.hasNextLine()){
answer=in.nextLine();
if (answer.contains("-")) {
temp=answer.split(":");
value=Integer.parseInt(temp[0]);
freq=Integer.parseInt(temp[1]);
}
}
在我到达txt文件末尾之后我想要比较频率值并将它们从最小到大的存档
答案 0 :(得分:2)
阅读整个文件的最简单方法是使用the Files convenience methods,例如:
List<String> lines = Files.readAllLines(Paths.get("path/to/your/file"),
Charset.forName("UTF-8"));
然后,您可以处理列表,并使用这些行执行您需要的操作。
答案 1 :(得分:0)
如果要单独保存行,可以使用数组,否则只需将文件内容添加到字符串变量中。
但是您应该指定您想要对内容做什么,以便我们为您提供帮助。
答案 2 :(得分:0)
这样的事情应该使用scanner
来做Scanner s = new Scanner(file object pointing at file));
List<String> listOfLines = new ArrayList<String>();
while (s.hasNext()) {
listOfLines.add(s.next());
}
s.close();
但是有很多方法可以使用BufferedReaders和其他java类来完成它。听起来你的问题的关键在于使用什么数据结构。您应该使用列表,因为这会动态增长。除非您事先知道文件中的行数
,否则数组不适合您更新
如果你想添加val和freq,那么我会创建另一个类。
class StuffHolder {
private final String val;
private final String freq;
public StuffHolder(String val, String freq) {
this.val = val;
this.feq = freq;
}
//plus some getters
}
然后将您的列表更新为
List<StuffHolder> listOfLines = new ArrayList<StuffHolder>();
我相信你能想到比StuffHolder更好的名字;)
如果您正在尝试计算频率,那么如果val是关键字,那么使用地图可能会更好。 Val可能是地图中的关键,然后每次找到val
的实例时,您可以将值增加1