Search code examples
javafilefile-writing

Erasing my data on the txt file while trying to add numbers in Java


The following code works fine except the code that is supposed to add numbers to an existing txt file (Fred56.txt). He posted the:

PrintWriter outputfile = new PrintWriter(file);
outputfile.println(totalDeposit);
outputfile.close();

I tried to search for it but I cannot find the correct answer when it comes to ask the user the (Scanner) file name. I would like to add the totalDeposit to the existing datas on the file witout erasing them.

import java.io.*;
import java.util.Scanner;

public class TestSavingsAccount {

    public static void main(String[] args) throws IOException {

        double totalDeposit = 0;
        double totalInterest = 0 ;
        double totalWithdraw = 0;
        String filename ;

        Scanner keyboard = new Scanner(System.in);

        System.out.println("Enter the annual interest rate");
        double userAnnualinterest = keyboard.nextDouble();

        System.out.println(" Enter the starting balance");
        double userStartingbalance = keyboard.nextDouble();

        System.out.println(" Enter the number of months");
        int userNumberMonths = keyboard.nextInt();

        SavingsAccount account1 = new SavingsAccount(userStartingbalance);
        account1.setAnnualInterest(userAnnualinterest);

        for(int currentmonth = 1 ; currentmonth <= userNumberMonths; currentmonth ++ )
        {
            System.out.println("How much did you deposit during the month ?" + currentmonth);
            double depositAmount = keyboard.nextDouble();

            account1.deposit(depositAmount);
            totalDeposit += depositAmount ;

            System.out.println("How much do you want to withdraw ?" + currentmonth);
            double userWithdraw = keyboard.nextDouble();
            account1.withdraw(userWithdraw);
            totalWithdraw += userWithdraw ;

            totalInterest += account1.addMonthlyInterest();


            keyboard.nextLine() ;

            System.out.println(" What is the file name ?");
            filename = keyboard.nextLine() ;
            File file = new File(filename);

            PrintWriter outputfile = new PrintWriter(file);
            outputfile.println(totalDeposit);
            outputfile.close();

        }

        System.out.println(" The final balance of the end " + userNumberMonths + "is" +
            account1.getBalance() + " total amount of withdraw " + totalWithdraw +
            " Total amount of deposit " +totalDeposit + " The total of interest" + totalInterest);

    }

}

Solution

  • According to my understanding, you are asking for a solution to open a file in append mode. There are several ways to achieve that. You can use the following in code.

    try{
       PrintWriter outputfile = new PrintWriter(new BufferedWriter(new FileWriter (filename, true)));
       outputfile.println(totalDeposit);
       outputfile.close();
       }catch(IOException ex){
    // Handle your exception
       }