Обработка токенов и строк 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...*/
}