Обработка токенов и строк Java

Я пишу программу, которая читает данные из текстового файла с различными статистическими данными о баскетболе. Каждая строка (после двух строк заголовка) соответствует одной конкретной игре и счетам каждой команды с некоторыми другими строками. Я пытаюсь использовать сканеры, чтобы прочитать значения 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 Рис 63 @ Уинтроп 54 О1
2007-11-11 @S Dakota St 93 UC Riverside 90 O2
2007-11-11 @Texas 92, Missouri St 55
2007-11-11 Теннесси 76 Чаттануга 56
2007-11-11 St Миссисипи 76 Столетие 57
2007-11-11 ETSU 75 Делавэр St 72 O1 Предсезонное NIT

1 ответ

Читать файл построчно. затем разделите строку на строку []. Поскольку вы знаете, где находятся оценки в каждой строке, вы можете легко проанализировать эти значения из массива и сравнить. не могли бы вы поделиться несколькими строками из вашего ввода? тогда я могу показать вам точный код

Вы можете попробовать что-то вроде

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

где str - строка, которую вы только что прочитали. теперь массив частей будет иметь все числа в вашей строке. просто прочитайте массив, разберите 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...*/
        }
Другие вопросы по тегам