私は完全なプログラムを書くつもりはありませんが、私はそれぞれの質問に取り組み、あなたに簡単な提案をするように努めます:
初期ファイルを読み取ると、各行を取得して、BufferedReaderを使用して文字列に格納できます(または、必要に応じてLineNumberReaderを使用します)。
BufferedReader br = new BufferedReader(new FileReader(file));
String strLine;
while ((strLine = br.readLine()) != null) {
......Do stuff....
}
その時点で、whileループで文字列を調べます(コンマで区切られているため、これを使用して各セクションを区切ることができます)。サブストリングごとに、a)1番目、2番目、3番目、4番目と比較して配置を取得できます。b)それらのいずれでもない場合は、ゲーム名またはユーザー名のいずれかである可能性があります
これは、位置またはn番目のサブストリングで把握できます(つまり、これが5番目のサブストリングである場合、最初のゲーム名である可能性があります。プレーヤーが4人いるため、次のゲーム名は10番目のサブストリングになります)。「ゲームイベント」はパターンの一部ではないため、無視したことに注意してください。私が見つけたチュートリアルへのリンクを提供することを説明しようとするのではなく、splitを使用してこれまたは他の多くのオプションを実行できます:http:
//pages.cs.wisc.edu/~hasti/cs302/examples /Parsing/parseString.html
結果の集計に関しては、基本的に、各プレーヤーのint配列を取得して、1位、2位、3位、賞などを追跡できます。
int[] Bob = new int[4]; //where 0 denotes # of 1st awards, etc.
int[] Jane = new int[4]; //where 0 denotes # of 1st awards, etc.
テーブルの表示は、データを整理し、GUIでJTableを使用することです:http:
//docs.oracle.com/javase/tutorial/uiswing/components/table.html
了解しました...これが私が書いたものです。よりクリーンで高速な方法があると確信していますが、これはあなたにアイデアを与えるはずです:
String[] Contestants = {"Bob","Bill","Chris","John","Michael"};
int[][] contPlace=new int[Contestants.length][4];
String file = "test.txt";
public FileParsing() throws Exception {
Arrays.fill(contPlace[0], 0);
Arrays.fill(contPlace[1], 0);
Arrays.fill(contPlace[2], 0);
Arrays.fill(contPlace[3], 0);
BufferedReader br = new BufferedReader(new FileReader(file));
String strLine;
while((strLine=br.readLine())!=null){
String[] line = strLine.split(",");
System.out.println(line[0]+"/"+line[1]+"/"+line[2]+"/"+line[3]+"/"+line[4]);
if(line[0].equals("Game Event")){
//line[1]==1st place;
//line[2]==2nd place;
//line[3]==3rd place;
}else{//we know we are on a game line, so we can just pick the names
for(int i=0;i<line.length;i++){
for(int j=0;j<Contestants.length;j++){
if(line[i].trim().equals(Contestants[j])){
System.out.println("j="+j+"i="+i+Contestants[j]);
contPlace[j][i-1]++; //i-1 because 1st substring is the game name
}
}
}
}
}
//Now how to get contestants out of the 2d array
System.out.println("Placement First Second Third Fourth");
System.out.println(Contestants[0]+" "+contPlace[0][0]+" "+contPlace[0][1]+" "+contPlace[0][2]+" "+contPlace[0][3]);
System.out.println(Contestants[1]+" "+contPlace[1][0]+" "+contPlace[1][1]+" "+contPlace[1][2]+" "+contPlace[1][3]);
System.out.println(Contestants[2]+" "+contPlace[2][0]+" "+contPlace[2][1]+" "+contPlace[2][2]+" "+contPlace[2][3]);
System.out.println(Contestants[3]+" "+contPlace[3][0]+" "+contPlace[3][1]+" "+contPlace[3][2]+" "+contPlace[3][3]);
System.out.println(Contestants[4]+" "+contPlace[4][0]+" "+contPlace[4][1]+" "+contPlace[4][2]+" "+contPlace[4][3]);
}
出場者の配列にデータを入力したり、ゲームを追跡したりする必要がある場合は、適切なコードを挿入する必要があります。また、これらを表示する以外のことをしたい場合は、この2次元配列メソッドを使用するのはおそらく最善ではないことに注意してください。あなたは私のコードを取り、メインを追加し、それが実行されるのを見ることができるはずです。