В настоящее время я работаю над следующим методом:
public void addExpenditure(Stack<Double> costStack){
try(BufferedWriter bw = new BufferedWriter(new FileWriter(f.getPath(), true))) {
while (costStack.size() != 0)
bw.write(costStack.pop().toString() + " ,");
}catch(Exception e){
e.printStackTrace();
}
}
Метод состоит в том, чтобы просто взять значения, хранящиеся в стеке costStack
, и записать их в файл.Однако по неизвестной причине этого не происходит.
Вместо этого каждый раз в файл ничего не записывается.Это странно, потому что этот метод работает точно так же, как и должен, и он почти идентичен:
public void addExpenditure(double amount){
Double amount1 = amount;
try(BufferedWriter bf = new BufferedWriter(new FileWriter(f.getPath(), true))){
bf.write(amount1.toString() + " , ");
}catch(IOException e){
e.printStackTrace();
}
}
Также не выдается никаких исключений.
Вот все методычто я сейчас использую, чтобы сделать эту «работу»:
import java.util.Scanner;
import java.util.Stack;
public class BudgetMain {
/*
Pre-Tax income per month: $5875
After-Tax income per month: $4112
Savings Goal per month (61% of After-Tax income): $2508.62
Expendable income per month (After-Tax income - Savings Goal Per month): $1604
*/
public static void main(String[] args){
try {
Budget b = new Budget();
b.clearFile();
System.out.println("Available funds left to spend this month: " + b.availableFundsLeft());
Stack<Double> costStack = new Stack<>();
costStack = takeValues(costStack);
b.addExpenditure(costStack);
System.out.println("Available funds left to spend this month: " + b.availableFundsLeft());
}catch(Exception e){e.printStackTrace();}
}
public static Stack<Double> takeValues(Stack<Double> costStack){
System.out.println("Enter appropriate expenditures");
Scanner stdin = new Scanner(System.in);
while(true) {
costStack.push(stdin.nextDouble());
if (costStack.peek() == -1){
costStack.pop();
return costStack;
}
}
}
}
Другой файл класса:
public void addExpenditure(Stack<Double> costStack){
try(BufferedWriter bw = new BufferedWriter(new FileWriter(f.getPath(), true))) {
while (costStack.size() != 0)
bw.write(costStack.pop().toString() + " ,");
}catch(Exception e){
e.printStackTrace();
}
}
public double availableFundsLeft(){
try{return afterTaxIncome - savingsGoalPerMonth -
getTotalExpenditureThisMonth();}
catch(Exception e){e.printStackTrace();}
return -1;
}