0

1933 年以降のすべての NCAA ディビジョン 1 チャンピオンシップ ゲームを含むテキスト ファイルから読み取る必要があります。

ファイルの形式は次のとおりです: 1939:Villanova:42:Brown:30 1945:ニューヨーク大学:70:オハイオ州:65 * *一部の大学には複数の空白があるという事実は、学校名を読み、年、ポイント、およびコロンを破棄するだけであるため、多くの問題を引き起こしています. どのスペースを破棄する区切り文字を使用する必要があるかどうかはわかりませんが、最終的な行は非常に失われています。

日付、ポイント、および「:」を破棄します。私は useDelimiter メソッドに少し慣れていますが、.split("") が役立つ可能性があることを読みました。パターンの知識が不足しているため、多くの問題を抱えています。

これは私がこれまでに持っているものです:

class NCAATeamTester
{
public static void main(String[]args)throws IOException
{
NCAATeamList myList = new NCAATeamList();     //ArrayList containing teams
Scanner in = new Scanner(new File("ncaa2012.data"));   
in.useDelimiter("[A-Za-z]+");      //String Delimeter excluding non alphabetic chars or ints
while(in.hasNextLine()){
String line = in.nextLine();
String name = in.next(line); 
String losingTeam = in.next(line);
//Creating team object with winning team 
NCAATeamStats win = new NCAATeamStats(name); 
myList.addToList(win);       //Adds to List
//Creating team object with losing team 
NCAATeamStats lose = new NCAATeamStats(losingTeam);
myList.addToList(lose)
}
}
}
4

1 に答える 1

1

どうですか

String[] spl = line.split(':');
String name1 = spl[1]; 
String name2 = spl[3];

?

または、同じ行にさらにレコードがある場合は、正規表現を使用します。

String line = "1939:Villanova:42:Brown:30   1945:New York University:70:Ohio State:65";

Pattern p = Pattern.compile("(.*?:){4}[0-9]+");
Matcher m = p.matcher(line);

while (m.find())
{
    String[] spl = m.group().split(':');
    String name = spl[1];
    String name2 = spl[3];
}
于 2013-01-02T15:52:09.723 に答える