程序应从文本文件中读取匹配数据。文件中的每一行都包含特定匹配项的数据。文件中每一行的格式如下:
home_team_name : away_team_name : home_team_score : away_team_score
请注意如何使用冒号(:)分隔输入的不同部分(字段定界符)。
以下是文件中典型数据行的示例。
Arsenal : Spurs : 2 : 1
Everton : Liverpool : 1 : 1
Huddersfield : Chelsea: 2 : 1
文件中存储的数据可能已损坏。为此,程序必须检查从文件读取的每一行数据,识别无效数据,并通过控制台上的消息将其报告给用户。该程序至少应检查并验证以下可能的问题– -字段分隔符可能丢失或使用了错误的字段分隔符。
答案 0 :(得分:0)
为此,您必须使用String
类的两个方法以及一个BufferedReader
的方法。这是一些代码
import java.io;
public class Program {
public static void main(String[] args) {
String filePath = "c:\temp\in.txt";
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line = br.readLine();
while (line != null) {
String[] fields = line.split(":");
String[] trimmedFields = new String[fields.length];
for (int i = 0; i < trimmedField.length; i++) {
trimmedFields[i] = fields[i].trim();
}
//do your verification with the trimmedFields
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:0)
您可以在':'处拆分每行,并检查数组长度以检查团队名称和得分是否可用:
boolean isDataComplete = line.split(":").length ==4;
检查第3个和第4个元素是否为整数值
boolean isValidScore = line.split(":")[2].trim().matches("\\d+") && line.split(":")[3].trim().matches("\\d+")
答案 2 :(得分:0)
简单,进行一个for
循环。这将检查您在实际车道内的字符。
但是,要执行此操作,您应该对每行进行限制,以使程序知道何时结束一行。例如|Arsenal : Spurs : 2 : 1|
。
鉴于此,您将执行以下操作:
BufferedReader br = new BufferedReader(new FileReader(file));
try {
String line;
int lineDelimeters=0;
int numberOfDelimeters=0;
while ((line = br.readLine()) != null) {
for(char c:line.toCharArray){
if(c=='|')
lineDelimeters++;
else if(c==':')
numberOfDelimeters++;
if(numberOfDelimeters<4 && lineDelimeters==2)
System.out.println("The file is corrupted.")
}
}
} finally {
br.close();
}