我正在编写一个应该像咖啡馆剪辑卡一样的应用程序。换句话说,对于顾客购买的每个n:th(在我的情况下为10)咖啡,他/她被授予免费饮料。所以,我已经完成了循环,我一直在编写和从文件中读取,因为我需要程序记住它最后停止的位置,以便客户能够关闭应用程序一旦他/她一直在商店里。但是,我很难搞清楚如何写入和读取文件,我的代码似乎没有输出任何.txt文件。我需要代码具有关闭条件,并且在进入此条件时,它应该将“count”写入.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;
}
}
答案 0 :(得分:0)
您需要在所需位置调用readFromFile
或saveToFile
才能执行。
我建议您在readFromFile
方法的开头调用Main
,在循环中使用其返回的内容和saveToFile
,只要期望的状态发生变化并且需要保存它。
答案 1 :(得分:0)
我在这看到一些问题。在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()方法中,将计数写为String。将其写为int是指Unicode字符:
bw.write(Integer.toString(count)); //updated per Hunter McMillen
并调用它......
FelixNeww f = new FelixNeww();
f.saveToFile(44);
System.out.println(f.readFromFile());