Java读取文本文件有效计数

时间:2014-11-09 00:19:20

标签: java

我正在制作一个可以读取足球结果文本文件的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();

任何帮助都会受到欢迎我在这里有点挣扎,提前谢谢

2 个答案:

答案 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();
    }