Geuni
Geuni

Reputation: 93

Trouble writing to a file in a specific format

I'm trying to write to the file Days2.dat in a specific format like this:

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

When a button is clicked, the actionperformed should:

Day

ActivityName

Supervisor Name

Location

Paid?

e.g.

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

Current code to write into 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);
}

The current output, however is like this(a little long, sorry) - the error is evident:

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

Upvotes: 0

Views: 105

Answers (1)

Byron
Byron

Reputation: 1313

You are currently writing the day of the week every time no matter what day we are actually processing which is not quite correct.

Since there are multiple days of the week in your file I would try something as follows:

  • Create a List (or some other object) for each day of the week. A map may be of more use here if you do not want to create so many objects e.g. Map<String, List<String>>
  • Determine what day of the week we are processing using your CDay variable (as you currently are doing).
  • If it is a match then add the activity into the List.
  • Once the file has been read write the contents of the Lists into the new file under each day of the week.

Upvotes: 2

Related Questions