0

次のような特定の形式でDays2.datファイルに書き込もうとしています。

Sunday
Advanced Open Water Dive Certificate
Sailing
Generation Next

Monday
Helping Hands
Beach Touch Rugby
Running Club
Yoga Club
Tennis Lessons

Tuesday
Recycling Club
Best Buddies
Crochet Club
Movie Club
Shooting Club

Wednesday
Table Tennis
Modern Dance
Contemporary Dance
Gavel Club

Thursday
Cooking
Gym Training

ボタンがクリックされたときに実行されるアクションは次のとおりです。

  • ファイルActivities.datから読み取り、アクティビティの日付と名前を特定します

  • 上記の形式でファイルDays2.datに書き込みます。Activities.datの形式は次のとおりです。

活動名

スーパーバイザー名

位置

有料?

例えば

Sunday
Advanced Open Water Dive Certificate
Mr.Jones
N/A
Yes

Sunday
Sailing
Mr. Jackson
N/A
Yes

Sunday
Generation Next
Ms.Steele
N/A
Yes

Monday
Helping Hands
Ms.Wafa
ANX0
No

Monday
Beach Touch Rugby
Mr.Jones
N/A
No

Days2.datに書き込む現在のコード

File f1 = new File("Days2.dat");
File f2 = new File("Activities.dat");

f1.delete();

try{
    BufferedWriter writer = new BufferedWriter(new FileWriter(f1, true));
    BufferedReader reader = new BufferedReader(new FileReader(f2));

    while(reader.ready())
    {
        String CDay = reader.readLine();
        String CActivityName = reader.readLine();
        String CSupervisor = reader.readLine();
        String CLocation = reader.readLine();
        String CPaid = reader.readLine();
        String nothing = reader.readLine();

        writer.write("Sunday" + "\n");
        if(CDay.equals("Sunday"))
        {
            writer.write(CActivityName + "\n");
        }


        writer.write("Monday" + "\n");            
        if(CDay.equals("Monday"))
        {
            writer.newLine();
            writer.write(CActivityName + "\n");
        }            


        writer.write("Tuesday" + "\n");
        if(CDay.equals("Tuesday"))
        {
            writer.newLine();
            writer.write(CActivityName + "\n");
        }


        writer.write("Wednesday" + "\n");
        if(CDay.equals("Wednesday"))
        {
            writer.newLine();
            writer.write(CActivityName + "\n");
        }


        writer.write("Thursday" + "\n");
        if(CDay.equals("Thursday"))
        {
            writer.newLine();
            writer.write(CActivityName + "\n");
        }
    }
    writer.flush();
    writer.close();
    reader.close();

} 
catch (IOException ex) {
    Logger.getLogger(StartUpFrame.class.getName()).log(Level.SEVERE, null, ex);
}

ただし、現在の出力は次のようになります(少し長く、申し訳ありません)-エラーは明らかです:

Sunday
Advanced Open Water Dive Certificate
Monday
Tuesday
Wednesday
Thursday
Sunday
Sailing
Monday
Tuesday
Wednesday
Thursday
Sunday
Generation Next
Monday
Tuesday
Wednesday
Thursday
Sunday
Monday

Helping Hands
Tuesday
Wednesday
Thursday
Sunday
Monday

Beach Touch Rugby
Tuesday
Wednesday
Thursday
Sunday
Monday

Running Club
Tuesday
Wednesday
Thursday
Sunday
Monday

Yoga Club
Tuesday
Wednesday
Thursday
Sunday
Monday

Tennis Lessons
Tuesday
Wednesday
Thursday
Sunday
Monday
Tuesday

Recycling Club
Wednesday
Thursday
Sunday
Monday
Tuesday

Best Buddies
Wednesday
Thursday
Sunday
Monday
Tuesday

Crochet Club
Wednesday
Thursday
Sunday
Monday
Tuesday

Movie Club
Wednesday
Thursday
Sunday
Monday
Tuesday

Shooting Club
Wednesday
Thursday
Sunday
Monday
Tuesday
Wednesday

Table Tennis
Thursday
Sunday
Monday
Tuesday
Wednesday

Modern Dance
Thursday
Sunday
Monday
Tuesday
Wednesday

Contemporary Dance
Thursday
Sunday
Monday
Tuesday
Wednesday

Gavel Club
Thursday
Sunday
Monday
Tuesday
Wednesday
Thursday

Cooking
Sunday
Monday
Tuesday
Wednesday
Thursday

Gym Training
4

1 に答える 1

2

現在、実際に処理している曜日に関係なく、毎回曜日を書いていますが、これは正確ではありません。

ファイルには複数の曜日があるため、次のようにします。

  • List曜日ごとに (または他のオブジェクト) を作成します。あまり多くのオブジェクトを作成したくない場合は、ここでマップを使用すると便利です。Map<String, List<String>>
  • (現在行っているように) CDay 変数を使用して、処理する曜日を決定します。
  • 一致する場合は、アクティビティをリストに追加します。
  • ファイルが読み取られたら、リストの内容を新しいファイルの各曜日に書き込みます。
于 2013-03-10T20:54:27.317 に答える