银行存取款,查询小程序 存在一个TXT中 多次操作txt会乱啊
直接上代码 有注视
package worktwo;java io
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Bank {
public static void main(String[] args) throws IOException {
Scanner s = new Scanner(System.in);
File src = new File("F:\\test.txt");
if (!src.exists()) {
src.createNewFile();
} else
System.out.println("logn right");
System.out.println("1-存钱 2-取钱 3-查询余额 4-退出");
FileReader fr = new FileReader(src);
BufferedReader br = new BufferedReader(fr);
String num = br.readLine();
br.close();
int count;
if (num == null)
count = 0;
else
count = Integer.parseInt(num);
FileWriter fw = new FileWriter(src, false);
BufferedWriter bw = new BufferedWriter(fw);
// 读出文件中的数字给count
int a = s.nextInt();// 进行操作选择
while (true) {
switch (a) {
case 1:// 存操作
System.out.println("存钱number");
int a1 = s.nextInt();
count = count + a1;
num = String.valueOf(count);
bw.write(num);
bw.flush();
break;
case 2:// 取操作
System.out.println("取钱 number");
int a2 = s.nextInt();
if (a2 > count)
System.out.print("清输入正确的取款数");
else
count = count - a2;
bw.write(num);
bw.flush();
break;
case 3:// 显示TXT中的数字
System.out.println(count);
num = String.valueOf(count);
bw.write(num);
break;
case 4:// 退出
bw.close();
return;
default:
bw.close();
System.out.print("清输入正确的选项");
break;
}
}
}
}
[解决办法]
每个case都执行open file 操作。。。 close file
[解决办法]
逻辑问题有点严重,程序有各种各样的bug啊
按照你的思路给你修改了一些,不排除没有其他bug
package com.kiritor;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Bank {
public static void main(String[] args) throws IOException {
Scanner s = new Scanner(System.in);
File src = new File("F:\\test.txt");
if (!src.exists()) {
src.createNewFile();
} else
System.out.println("logn right");
System.out.println("1-存钱 2-取钱 3-查询余额 4-退出");
FileReader fr = new FileReader(src);
BufferedReader br = new BufferedReader(fr);
String num = br.readLine();
System.out.println(num+"test");
br.close();
int count;
if (num == null)
count = 0;
else
count = Integer.parseInt(num);//存款
System.out.println("count:"+count);
// 读出文件中的数字给count
int a = s.nextInt();// 进行操作选择
while (true) {
switch (a) {
case 1:// 存操作
FileWriter fw = new FileWriter(src, false);
BufferedWriter bw = new BufferedWriter(fw);
System.out.println("存钱number");
int a1 = s.nextInt();
count = count + a1;
num = String.valueOf(count);
bw.write(num);
bw.flush();
bw.close();
fw.close();
System.out.println("选择操作:1-存钱 2-取钱 3-查询余额 4-退出");
a = s.nextInt();
break;
case 2:// 取操作
FileWriter fw2 = new FileWriter(src, false);
BufferedWriter bw2 = new BufferedWriter(fw2);
System.out.println("取钱 number");
int a2 = s.nextInt();
if (a2 > count)
System.out.print("清输入正确的取款数");
else
count = count - a2;
bw2.write(String.valueOf(count));
bw2.flush();
bw2.close();
fw2.close();
System.out.println("选择操作:1-存钱 2-取钱 3-查询余额 4-退出");
a = s.nextInt();
break;
case 3:// 显示TXT中的数字
System.out.println(count);
System.out.println("选择操作:1-存钱 2-取钱 3-查询余额 4-退出");
a = s.nextInt();
break;
case 4:// 退出
System.exit(0);
return;
default:
System.out.print("清输入正确的选项");
break;
}
}
}
}