我正在制作一个可以读取足球结果文本文件的java文件,其中一些文件无效。文本文件如下所示:
Chelsea : Manchester City : 2 : 1
Manchester United : Stoke City : 5 : 0
West Ham United : Middlesbrough : 2 : 2
Aston Villa:Fulham:4:1
Hull : :2:5
Arsenal Liverpool :2:2
代码必须打印出有多少有效数组行,如前三行,以及有多少无效,如底部3 ...这是我到目前为止:
public void showResults(){
String separator = ":";
File inputfile = new File ("valid.txt");
String[] StrArray;
String aLine = "";
System.out.println ("Home "+"\tHome points" + "\t Away " + "\t Away points \n____________________________________________" );
try {
Scanner filescan = new Scanner(inputfile);
while (filescan.hasNext()){
aLine = filescan.nextLine();
StrArray = aLine.split(separator);
if (StrArray.length == 4){
System.out.println (StrArray[0] +"\t" + StrArray [2] + StrArray[1] + "\t" + StrArray[3]);
}
}
filescan.close();
任何帮助都会受到欢迎我在这里有点挣扎,提前谢谢
答案 0 :(得分:0)
每行都拨打split(":")
。如果结果数组包含空字符串,则它无效。
空的意思是""
或" "
。任何没有字符的东西。
答案 1 :(得分:0)
这意味着这个
String separator = ":";
File inputfile = new File ("input.txt");
String[] StrArray;
String aLine = "";
System.out.println ("Home "+"\tHome points" + "\t Away " + "\t Away points \n____________________________________________" );
try {
Scanner filescan = new Scanner(inputfile);
while (filescan.hasNext()){
aLine = filescan.nextLine();
StrArray = aLine.split(separator);
if (StrArray.length == 4 && !StrArray[0].isEmpty()
&& !StrArray[1].isEmpty() && !StrArray[2].isEmpty()
&& !StrArray[3].isEmpty())
{
System.out.println (StrArray[0] +"\t" + StrArray [2] + StrArray[1] + "\t" + StrArray[3]);
}
}
filescan.close();
}
catch (Exception e)
{
e.printStackTrace();
}