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