我一直在研究这个代码,几乎就在终点。我想要的是代码应该作为剪辑卡工作,记住购买咖啡的数量,并每10次购买时给客户一杯免费咖啡。我正在写一个文件并从中读取文件,以便客户能够在上次离开的地方继续他的剪辑卡。所以对我的问题...我已经正确地将我的“count”变量写入文件,并且它正确地存储它。但是,每次我再次运行程序时,它都会从0开始,我不明白为什么。我需要它来保存当前计数,并再次运行后读取计数。例如,如果客户之前购买了7个咖啡并且正在返回商店,那么他的柜台需要从7开始。出于某种原因,它不会这样做。
这是我到目前为止所拥有的:
public class FelixNeww {
public static void main(String [] args) {
Scanner key;
String entry;
int count = 0;
String password = "knusan01";
FelixNeww f = new FelixNeww();
System.out.println(f.readFromFile());
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)");
f.saveToFile(count);
}
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("C:\\Temp\\countStorage.txt"))));
bw.write(Integer.toString(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(new InputStreamReader(new FileInputStream(new File("C:\\Temp\\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 :(得分:1)
您当前正在将count
变量设置为0.您应该将其设置为文件中的值。在while
循环之前执行此操作:
count = f.readFromFile();
while(true) {
您还应该实现一种优雅地退出while
循环的方法。例如,如果用户输入" q",您可以执行break;
语句以退出while
循环。在while
循环后,请调用key.close();
以关闭扫描程序对象。
答案 1 :(得分:0)
count变量的范围在两个实例中都是本地的
public static void main(String [] args) {
Scanner key;
String entry;
int count = 0;
String password = "knusan01";
System.out.println(f.readFromFile());
public int readFromFile()
{
BufferedReader br = null;
try
{
br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("C:\\Temp\\countStorage.txt"))));
String line = br.readLine();
int count = Integer.parseInt(line);
return count;
在readFromFile函数中,你从文件中读取它,返回它,但是不要在变量中跟踪它,为什么不在你的main中替换println:
count=f.readFromFile