帮改改这程序(模拟银行存取款) 花我半天不知错哪
程序代码:
package com.hb.bank;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
//import java.text.SimpleDateFormat;
//import java.util.Calendar;
public class Bank {
static BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));// 输入流
private static String name;// 定义用户名
private static String password;// 定义用户密码
private static long money;// 定义初始余额
private long saveMoney;// 定义存款变量
private long takeMoney;// 定义取款变量
String saveDate;// 定义存款时间变量
String takeDate;// 定义取款时间变量
String choose;// 定义选择菜单的变量
ArrayList saveTime = new ArrayList();
//定义动态数组用来存储存款时间
ArrayList takeTime = new ArrayList();
//定义动态数组用来存储取款时间
ArrayList save_Money = new ArrayList();
//定义动态数组用来存储取款数目
ArrayList take_Money = new ArrayList();
//定义动态数组用来存储取款数目
/**
* 带参数:账户密码money的构造方法
*/
public Bank(String name, String password, long money) {
this.name = name;
this.password = password;
this.money = money;
}
/**
* 用户登陆
*/
public void login() {
int i = 3;// 定义一个计数器
// String getName = null;// 初始化输入用户名的字符
// String getPassword = null;// 初始化输入密码的字符
// 构造while循环判断输入直到正确
while (true) {
System.out.print("请输入用户名:");
try {
name = br.readLine();
} catch (IOException e) {
}
System.out.print("请输入密码:");
try {
password = br.readLine();
} catch (IOException e) {
}
if (name.equals("admin") && password.equals("admin")) {
System.out.flush();
System.out.println("恭喜你,成功登陆!");
System.out.println("你的余额为" + money + "元");
break;
} else {
i--;// 错误一次 计数器递减
if (i == 0) {
System.out.println("输入超过最大次数!程序退出");
System.exit(0);
// 3次错误 程序退出
}
System.out.println("对不起,您输入的用户名或密码错误,请重新输入:" + "你还有" + i
+ "次机会");
}
}
}
/**
* 构造函数 登陆成功进行操作
*/
public Bank() {
// String choose = null;
while (true) {
System.out.println("请选择您要进行的操作:1.存款 2.取款 3.查询 4.退出");
try {
choose = br.readLine();// 读取字符
} catch (IOException e) {
}
// 存款
if (("1") == 0) {
//
while (true) {
System.out.println("请输入你要存储的金额(注意请输入整数):");
try {
saveMoney = Long.parseLong(br.readLine());
} catch (NumberFormatException e) {
System.out.println("输入错误,请输入整数");
continue;
} catch (IOException e) {
}
money += saveMoney;
// saveDate = new Date();
saveDate = getTime();
saveTime.add(saveDate);
save_Money.add(saveMoney);
System.out.println("存款成功!已存入" + saveMoney + "元" + "你的可用余额为"
+ money + "元");
break;
}
}
// 取款
else if (choose.equals("2")) {
while (true) {
System.out.println("请输入你要取款的金额(注意请输入整数):");
try {
takeMoney = Long.parseLong(br.readLine());
} catch (NumberFormatException e) {
System.out.println("输入错误,请输入整数");
continue;
} catch (IOException e) {
}
if (!(money < takeMoney)) {
money -= takeMoney;// 余额减少
System.out.println("取款成功!已取出" + takeMoney + "元."
+ "你的余额为" + money + "元");
// takeDate = new Date();
takeDate = getTime();
takeTime.add(takeDate);
take_Money.add(takeMoney);
break;
} else {
System.out.println("余额不足,请重新输入:");
}
continue;
}
}
// 输入3为查询
else if (("3") == 0) {
System.out.println("你的余额为" + money + "元;");
for (int i = 0; i <= saveTime.size(); i++) { //这里要是登陆后直接按3这段代码怎么处理???请帮忙改改给点意见 System.out.println("您在" + saveTime.get(i) + "存入"
+ save_Money.get(i) + "元");
System.out.println("您在" + takeTime.get(i) + "取出"
+ take_Money.get(i)+ "元");
}
// for (int i = 0; i <= takeTime.size(); i++) {
// }
continue;
}
// 输入4为退出
else if (choose.equals("4")) {
System.out.println("程序退出");
System.exit(0);
}
// 输入其它的就为不合法,返回重新输入
else {
System.out.println("输入无效!请输入合法的");
continue;
}
}
}
/**
* 获得系统当前时间
*/
public String getTime() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
return sdf.format(new Date());// new Date()为获取当前系统时间
}
/**
* 入口函数
*/
public static void main(String[] args) {
Bank b = new Bank(name, password, money);
b.login();// 调用登陆
new Bank();
}
}
按3查询时这样出错 查询功能 能正常显示出来Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at com.hb.bank.Bank.<init>(Bank.java:168)
at com.hb.bank.Bank.main(Bank.java:209)








