我需要一些程序的帮助,该程序必须读入指定的文本文件,然后验证其内容。每个有效匹配的结果应按以下格式输出到控制台(stdout):
HomeTeamName [HomeTeamScore] | AwayTeamName [AwayTeamScore]
在输出结束时,我需要生成统计信息,显示已处理的有效和无效匹配的总数。我还需要它来显示得分的目标总数。
到目前为止我的代码是:
public class Generator {
public static void main(String[] args) throws FileNotFoundException {
Scanner s = new Scanner(new File("results.txt"));
String line;
while ( s.hasNext() ) {
line = s.nextLine();
System.out.println(line);
}
System.out.println("\nEOF"); // Output and End Of File message.
}
}
示例输入文件为:
阿斯顿维拉:米德尔斯堡:3:1答案 0 :(得分:1)
使用java.util.regex.Pattern似乎很容易。只需为有效的记录格式构建一个正则表达式模式。然后为您阅读的每一行创建一个匹配器,看它是否匹配。如果是,则输出该行。
像(伪java代码):
Pattern pattern = Pattern.compile("your regular expression here");
while((line = readLine()) != null) {
Matcher m = pattern.matcher(line);
if (m.matches()) {
System.out.println(line + " is good");
} else {
System.out.println(line + " is not good");
}
}
没有正则表达式的选项:
while((line = readLine()) != null) {
String[] values = line.split(":");
if (values.length != 4) {
System.out.println("bad line: " + line);
}
// check for empty fields like:
if (values[0].isEmpty()) {/* error message */}
// check for proper numeric values like:
try {
// prob need to remove leading whitespace as well...
Integer.parseInt(values[2].trim());
} catch (NumberFormatException e) {/* error message */}
// etc...
}
鉴于上述两者之间的选择,我会使用表达式。它比通过一堆if / else代码更具表现力。还有像BeanIO这样的库可以为你做很多这样的事情。