老师布置了一个实验题:编写储蓄账户类及测试类,模拟存款,参考以下运行方式:
1.新开5个储蓄账户,各储蓄账户的编号、户名在新开储蓄账户时初始化,假设每位用户新开储蓄账户时都存入了一笔钱。
2.提示用户从键盘输入储蓄帐号编号。
3.若输入的储蓄账户编号与新开的5个储蓄账户编号之一匹配,则提示用户从键盘输入存款金额,存款金额必须大于0,否则显示错误提示,直到用户输入的存款金额大于0为止。
4.相应储蓄账户的余额被更新。
5.存款完成后,提示存款成功,显示该储蓄账户的编号、户名、余额。
6.若输入的储蓄账户编号与新开的5个储蓄帐号均无法匹配,显示错误提示,并询问是否继续存款。
7.用户输入yes,继续执行步骤2,否则显示退出信息。基本要求:储蓄账户的余额必须确保大于等于0。
并且老师提示到会用java.util.Map; java.util.HasMap;请自行查询API文档。这或许是为了加点难度吧。
通过查资料了解到Map是从键到值的映射,键不允许重复,每个键最多只能一个映射值。所以java.util.Map是用于步骤3,检测输入帐号是否与已开的5个帐号之一匹配的。想详细了解Map请自己查一下吧!
下面直接上代码吧!
package depositSystem; //我新建的包
import java.util.Scanner;
public class depositAccount { //定义储存账户类
int AccountNumber; //账户号
String AccountName; //户名
double Balance; //余额
depositAccount(int AcNum,String AcNa,double B){
AccountNumber=AcNum;
AccountName=AcNa;
Balance=B;
}
void deposit() { //存款方法
Scanner read=new Scanner(System.in);
double b=read.nextDouble();
while(b<0) {
System.out.println("存款金额需大于0额!再给你一次机会!");
b=read.nextDouble();
}
Balance+=b;
System.out.println("存款成功!");
}
void show() { //显示储蓄账户信息
System.out.println("账号:"+AccountNumber);
System.out.println("用户名:"+AccountName);
System.out.println("余额:"+Balance);
}
}
下面是测试类代码
package depositSystem;
import java.util.Map;
import java.util.HashMap;
import java.util.Scanner;
public class depositTest {
public static void main(String[] args) {
depositAccount user1=new depositAccount(2020001,"关羽",100);
depositAccount user2=new depositAccount(2020002,"张飞",100);
depositAccount user3=new depositAccount(2020003,"黄忠",100);
depositAccount user4=new depositAccount(2020004,"赵云",100);
depositAccount user5=new depositAccount(2020005,"马超",100);
Scanner scanner=new Scanner(System.in);
int a;
String x="yes";
Map<Integer,depositAccount>map=new HashMap<>(); //初始化Map,以帐号类型为健,储蓄类为值
map.put(2020001,user1); //put方法把对应的数据放进Map中储存
map.put(2020002,user2);
map.put(2020003,user3);
map.put(2020004,user4);
map.put(2020005,user5);
while(x.equals("yes")) { //equals判断字符串x中的字符是否为yes,返回bool值为类型
System.out.println("请输入你的账号:");
a=scanner.nextInt();
if(map.get(a)!=null){ //get方法通过键找对应的值
System.out.println("请输入存款金额:");
map.get(a).deposit();
map.get(a).show();
x="exit";
}
else {
System.out.println("用户名错误!");
System.out.println("是否重新输入账号?\n输入yes继续,否则退出。");
x=scanner.next(); //更新字符串X
}
}
System.out.println("感谢你的使用,祝您生活愉快!");
}
}