我使用一个按钮将用户输入保存到文本文件中,现在我想检索它来进行计算。将更新文本文件并添加新值。下面是文本文件外观的示例:
...etc
当有一个新的输入时,它将被添加,因此更新的文本文件如下所示:
基本上,我想比较新的输入和前面的输入。如何仅从最新和最后的输入中检索所有整数?
还是我应该使用excel?
这是我的代码:
try (
InputStream fs = new FileInputStream("data.txt");
// not sure how to use the Charset.forname
InputStreamReader isr = new InputStreamReader(fs, Charset.forName("UTF-8"));
BufferedReader br = new BufferedReader(isr)) {
for (String line1 = br.readLine(); line1 != null; line = br.readLine()) {
comp = line1 - line2; //line1 being current line(4) and line2 being the previous(3)
}
}发布于 2016-11-21 09:34:06
简单地说:
相应的代码:
try (
InputStream fs = new FileInputStream("data.txt");
InputStreamReader isr = new InputStreamReader(fs, StandardCharsets.UTF_8);
BufferedReader br = new BufferedReader(isr)) {
// Previous line
String prev = null;
// Last line
String last = null;
String line;
while ((line = br.readLine()) != null) {
prev = last;
last = line;
}
// Pattern used to extract the integers
Pattern pattern = Pattern.compile("\\d+");
// Matcher for the previous line
Matcher matcher1 = pattern.matcher(prev);
// Matcher for the last line
Matcher matcher2 = pattern.matcher(last);
// Iterate as long as we have a match in both lines
while (matcher1.find() && matcher2.find()) {
// Value of previous line
int val1 = Integer.valueOf(matcher1.group());
// Value of last line
int val2 = Integer.valueOf(matcher2.group());
// Do something here
}
}NB:假设两行的整数数完全相同,否则可以比较不相关的值。
另一种方法是使用Java 8,您可以使用非整数作为分隔符,然后依赖splitAsStream(CharSequence input)将所有整数提取为List。
...
// Non integers as a separators
Pattern pattern = Pattern.compile("\\D+");
// List of extracted integers in previous line
List<Integer> previous = pattern.splitAsStream(prev)
.filter(s -> !s.isEmpty())
.map(Integer::valueOf)
.collect(Collectors.toList());
// List of extracted integers in last line
List<Integer> current = pattern.splitAsStream(last)
.filter(s -> !s.isEmpty())
.map(Integer::valueOf)
.collect(Collectors.toList());
// Do something here发布于 2016-11-21 12:06:05
https://stackoverflow.com/questions/40715885
复制相似问题