2

我正在编写一个程序,它从具有各种篮球运动统计数据的文本文件中读取数据。每一行(在两个标题行之后)对应于一场特定的比赛和每支球队的得分,其中还有一些其他字符串。我正在尝试使用扫描仪读取每场比赛的 int 分数,将它们存储在变量中,然后比较它们以确定哪支球队赢得了那场比赛,这样我就可以在程序的后面增加胜利。我想出了如何按顺序读取所有整数,但我不知道如何读取一行中的两个整数,将它们存储为变量,比较它们,然后继续下一行/游戏。

以下是相关方法:

public static void numGamesHTWon(String fileName)throws FileNotFoundException{
    System.out.print("Number of games the home team won: ");
    File statsFile = new File(fileName);
    Scanner input1 = new Scanner(statsFile);
    String line = input1.nextLine();
    Scanner lineScan = new Scanner(line);
    input1.nextLine();
    input1.nextLine();

    while (input1.hasNext()) {
        if (input1.hasNextInt()) {
            int x = input1.nextInt();
            System.out.print(x);   
            input1.next();
        } else {
            input1.next();
        }
    }

文本文件中的几行:

NCAA女篮

2011 - 2012

2007-11-11 Rice 63 @Winthrop 54 O1
2007-11-11 @S Dakota St 93 UC Riverside 90 O2
2007-11-11 @Texas 92 Missouri St 55
2007-11-11 Tennessee 76 Chattanooga 56
2007-11-11 Mississippi St 76 Centenary 57
2007-11-11 ETSU 75 Delaware St 72 O1 Preseason NIT

4

1 回答 1

1

逐行读取文件。然后将该行拆分为 String[]。由于您知道分数在每行上的位置,因此您可以轻松地从数组中解析这些值并进行比较。你能分享几行你的输入吗?然后我可以告诉你确切的代码

你可以尝试类似的东西

String[] parts = str.split("\\D+");

其中 str 是您刚刚阅读的行。现在,parts 数组将包含字符串中的所有数字。只需通读数组,解析为 int 并进行比较。请注意,此数组中的前三个条目将对应于日期,因此请忽略它们。

例如

String[] parts = "2007-11-11 Mississippi St 76 Centenary 57".split("\\D+");

for (String g: parts)

        System.out.println(g);

打印出来

2007
11
11
76
57

所以现在你可以取最后两个值并进行比较

 while (input1.hasNextLine()) {
            String line = input1.nextLine();

             String[] parts = line .split("\\D+");

             int score1 = Integer.parseInt(parts[parts.length-2]);

             int score2 = Integer.parseInt(parts[parts.length-1]);

             /*now compare score1 and score2 and do whatever...*/
        }
于 2015-10-23T17:38:54.500 回答