Java 堆栈值未读入文件

Java 堆栈值未读入文件,java,io,stack,bufferedwriter,Java,Io,Stack,Bufferedwriter,我目前正在研究以下方法: 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() + " ,

我目前正在研究以下方法:

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();
    }

}
也不会引发异常

以下是我目前使用的所有方法来实现这一“工作”:

import java.util.Scanner;
导入java.util.Stack;
公共课预算{
/*
每月税前收入:5875美元
每月税后收入:4112美元
每月储蓄目标(税后收入的61%):2508.62美元
每月消耗性收入(税后收入-每月储蓄目标):1604美元
*/
公共静态void main(字符串[]args){
试一试{
预算b=新预算();
b、 clearFile();
System.out.println(“本月剩余可用资金:+b.availableFundsLeft());
Stack costStack=新堆栈();
costStack=takeValues(costStack);
b、 附加费用(成本堆栈);
System.out.println(“本月剩余可用资金:+b.availableFundsLeft());
}catch(异常e){e.printStackTrace();}
}
公共静态堆栈值(堆栈成本堆栈){
系统输出打印项次(“输入适当支出”);
扫描仪标准输入=新扫描仪(System.in);
while(true){
costStack.push(stdin.nextDouble());
if(costStack.peek()=-1){
costStack.pop();
返回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;
}
public void addExpenditure(堆栈成本堆栈){
try(BufferedWriter bw=new BufferedWriter(new FileWriter(f.getPath(),true))){
while(costStack.size()!=0)
write(costStack.pop().toString()+“,”);
}捕获(例外e){
e、 printStackTrace();
}
}
公共双可用性Fundsleft(){
请尝试{return afteraxincome-savingsGoalPerMonth-
getTotalExpenditureThisMonth();}
catch(异常e){e.printStackTrace();}
返回-1;
}

此代码似乎有效,它创建了一个包含2.0、1.0、

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.Stack;

public class BudgetMain {


    public static void main(String[] args){
        Stack<Double> stack = new Stack<>();
        stack.push(1.0);
        stack.push(2.0);
        addExpenditure1(stack, new File("test.out"));
    }


    public static void addExpenditure1(Stack<Double> costStack, File f){

        try(BufferedWriter bw = new BufferedWriter(new FileWriter(f.getPath(), true))) {

            while (costStack.size() != 0)
                bw.write(costStack.pop().toString() + " ,");

        }catch(Exception e){
            e.printStackTrace();
        }

    }
}
导入java.io.BufferedWriter;
导入java.io.File;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.util.Scanner;
导入java.util.Stack;
公共课预算{
公共静态void main(字符串[]args){
堆栈=新堆栈();
堆栈推送(1.0);
堆栈推送(2.0);
addExpenditure1(堆栈,新文件(“test.out”);
}
公共静态void addExpenditure1(堆栈成本堆栈,文件f){
try(BufferedWriter bw=new BufferedWriter(new FileWriter(f.getPath(),true))){
while(costStack.size()!=0)
write(costStack.pop().toString()+“,”);
}捕获(例外e){
e、 printStackTrace();
}
}
}

我在文件编写器中使用路径时遇到了一些问题,可能与此有关?但是如果它找不到文件,那么它会给出一个异常,因此可能该文件是在其他地方创建的?首先,请确保f.getPath()提供了您想要的内容。否则,我将把代码扔进eclipse,看看是否能找到任何东西。在while循环中,您将检查
costStack.size()!=0
。你确定这是真的吗?您确定
takeValues()
正在用值填充堆栈吗?
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;
}
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.Stack;

public class BudgetMain {


    public static void main(String[] args){
        Stack<Double> stack = new Stack<>();
        stack.push(1.0);
        stack.push(2.0);
        addExpenditure1(stack, new File("test.out"));
    }


    public static void addExpenditure1(Stack<Double> costStack, File f){

        try(BufferedWriter bw = new BufferedWriter(new FileWriter(f.getPath(), true))) {

            while (costStack.size() != 0)
                bw.write(costStack.pop().toString() + " ,");

        }catch(Exception e){
            e.printStackTrace();
        }

    }
}