Java 循环后从文件中写入和读取int

Java 循环后从文件中写入和读取int,java,loops,file-io,Java,Loops,File Io,我正在写一个应用程序,它应该像一张咖啡馆的卡片。换句话说,在我的例子中,顾客每购买一杯n:Th10的咖啡,他/她就会得到一杯免费饮料。因此,我已经完成了循环,我一直在写文件和读取文件,因为我需要程序记住最后一次停止的位置,以便客户能够在他/她进入商店后关闭应用程序。然而,我很难弄清楚如何从文件中写入和读取,我的代码似乎没有输出任何.txt文件。我需要代码有一个关闭条件,当输入这个条件时,它应该将计数写入一个.txt文件,然后关闭。一旦程序下一次运行,它应该从这个.txt文件中读取,以便知道计数在

我正在写一个应用程序,它应该像一张咖啡馆的卡片。换句话说,在我的例子中,顾客每购买一杯n:Th10的咖啡,他/她就会得到一杯免费饮料。因此,我已经完成了循环,我一直在写文件和读取文件,因为我需要程序记住最后一次停止的位置,以便客户能够在他/她进入商店后关闭应用程序。然而,我很难弄清楚如何从文件中写入和读取,我的代码似乎没有输出任何.txt文件。我需要代码有一个关闭条件,当输入这个条件时,它应该将计数写入一个.txt文件,然后关闭。一旦程序下一次运行,它应该从这个.txt文件中读取,以便知道计数在哪里

以下是我目前掌握的情况:

公共类FelixNeww{

public static void main(String [] args) {
    Scanner key;
    String entry;
    int count = 0;
    String password = "knusan01";
    while(true) {
        System.out.println("Enter password: ");
        key = new Scanner(System.in);
        entry = key.nextLine();
        if(entry.compareTo(password) == 0){
            count++;
            System.out.println("You're one step closer to a free coffe! You have so far bought " 
                    + count + " coffe(s)");
        }
        if(count == 10  && count != 0){
            System.out.println("YOU'VE GOT A FREE COFFE!");
            count = 0;
        }
        if(entry.compareTo(password) != 0){
            System.out.println("Wrong password! Try again.\n");
        }
    }



}

public void saveToFile(int count)
{
    BufferedWriter bw = null;
    try
    {
        bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("countStorage.txt"))));
        bw.write(count);
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    finally
    {
        if(bw != null)
        {
            try
            {
                bw.close();
            }
            catch(IOException e) {}
        }
    }
}

public int readFromFile()
{
    BufferedReader br = null;
    try
    {
        br = new BufferedReader(newInputStreamReader(newFileInputStream(new File("countStorage.txt"))));
        String line = br.readLine();
        int count = Integer.parseInt(line);
        return count;
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    finally
    {
        if(br != null)
        {
            try
            {
                br.close();
            }
            catch(IOException e) {}
        }
    }
    return 0;
}
}

您需要在需要的位置调用readFromFile或saveToFile才能执行。
我建议您在Main方法的开头调用readFromFile,使用其返回的内容,并在所需状态发生更改且需要保存时在循环中保存文件。

我在这里看到一些问题。在readFromFile方法中,在关键字new后面加一个空格。我还建议现在为调试设置一个绝对路径:

br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("C:\\Temp\\countStorage.txt"))));
在saveToFile方法中,构造函数是错误的。另外,请将文件的完整路径放在此处:

bw = new BufferedWriter(new FileWriter("C:\\Temp\\countStorage.txt"));
最后,在saveToFile方法中,将计数写入字符串。将其写入int表示Unicode字符:

 bw.write(Integer.toString(count)); //updated per Hunter McMillen
然后调用它

    FelixNeww  f = new FelixNeww();
    f.saveToFile(44);
    System.out.println(f.readFromFile());

这都是你的密码吗?你在哪里调用saveToFile和readFromFile方法?我刚刚开始学习,我想我还没有调用它?我几天前才开始编写java代码,所以我非常缺乏经验,因为它们没有被调用-您应该了解java中主要方法的用途,您将了解原因。您可以尝试先从文件中读取数据,然后再写入文件,而不是一次完成所有工作。我认为Integer.toStringcount似乎是执行该转换的更合适的方法。