因为期末最后一次实验是关于ATM的,所以编写了下面的代码!
可能不太完善!欢迎大神指导!!!
以下代码我分别放于两个文件夹
注册:
登录:
我们都知道要使用ATM机,首先我们必须先注册账户和密码
bankCard.java
class bankCard
{
String bankId; //银行卡账号
String idPasswords; //银行卡账号的密码
String userName; //用户名
String userId; //用户身份证号
}
Register.java
import java.util.*;
public class Register extends bankCard
{
final int N = 1 ; //定义常量N来作为账号的最小长度
final int M = 6; //定义常量M来作为密码的长度
String bankId01;
String idPasswords01;
Scanner reader = new Scanner(System.in); //创建Scanner类的对象reader
/*
注册账号
*/
void setBankId(){
System.out.println("----------------------------------------------------");
System.out.println("-----------------------注册账号---------------------\n");
System.out.println("-------------请输入你的相关信息完成注册!------------\n");
System.out.print("账 号:");
bankId = reader.nextLine();
if(bankId.length() >= N && bankId.length() <= 19){ //判断账号的长度是否在N-19之间
for(int i=0;i<bankId.length();i++){ //遍历每一个字符
char ch = bankId.charAt(i);
if(ch >= '0' && ch <= '9'){
}
else{
System.out.println("账号中存在非数字,请重新输入!");
setBankId();
}
}
}
else{
System.out.println("账号非法!(账号位数不在"+N+"-19之间)");
setBankId();
}
}
/*
将银行卡账号作为返回值返回
*/
String getBankId(){
return bankId;
}
/*
设置密码
*/
void setIdPasswords(){
System.out.print("密 码:");
idPasswords = reader.nextLine();
if(idPasswords.length() == M){
/*
判断密码是否是数字
*/
for(int i=0;i<idPasswords.length();i++){ //遍历每一个字符
char ch = idPasswords.charAt(i);
if(ch >= '0' && ch <= '9'){
}
else{
System.out.println("\n密码中存在非数字,请重新输入!");
setIdPasswords();
}
}
}
else{
System.out.println("密码长度不符!(密码长度不为"+M+")");
setIdPasswords();
}
}
/*
将银行卡账号的密码作为返回值返回
*/
String getIdPasswords(){
return idPasswords;
}
void ZhuCe(String bankAccount){
Boolean zhuCe = true; //定义布尔类型变量zhuCe作为while循环使用
//System.out.println("--------请输入相关信息完成转账所须账号的注册!--------");
while(zhuCe){
setBankId();
bankId01 = getBankId();
if(bankId01.equals(bankAccount)){
System.out.println("-------------此账号已被注册!请重新注册!-------------");
continue;
}
else{
setIdPasswords();
idPasswords01 = getIdPasswords();
zhuCe = false;
}
}
}
String getBankId2(){
return bankId01;
}
String getIdPasswords2(){
return idPasswords01;
}
/*
登记银行卡用户的姓名
*/
void setUserName(){
System.out.print("姓 名:");
userName = reader.nextLine();
if(userName.length() <= 4){
for(int i = 0; i < userName.length();i++){
int ch = (int)userName.charAt(i);
if(19968 <= ch && ch< 40869){ //判断ch是否是汉字
}
else{
System.out.println("姓名存在非法字符!请重新输入!");
setUserName();
}
}
}
else{
System.out.println("姓名长度有误!请重新输入!");
setUserName();
}
}
/*
登记银行卡用户的身份信息(身份证件号)
*/
void setUserId(){
System.out.print("身份证号:");
userId = reader.nextLine();
if(userId.length() == 18){
for(int i=0;i<userId.length();i++){ //遍历每一个字符
char ch = userId.charAt(i);
if(i <userId.length()-1){
if(ch >= '0' && ch <= '9'){
}
else{
System.out.println("身份证号中存在非数字,请重新输入!");
setUserId();
}
}
else{
if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || (ch>='0' && ch<='9')){ //判断最后一位数是否是字母或数字
}
else{
System.out.println("身份证号中存在非法字符,请重新输入!\n (除最后一位可以为字母或数字,其余只能为数字)");
setUserId();
}
}
}
}
else{
System.out.println("身份证号长度非法!(身份证号长度不为18)");
setUserId();
}
}
/*
将用户信息作为返回值返回
*/
String getUserName(){
return userName;
}
String getUserId(){
return userId;
}
}
ZhuCe.java
import java.io.*;
import java.util.*;
public class ZhuCe
{
public static void main(String[] args) throws IOException
{
//创建文件夹
File f = new File("D:/用户信息");
//判断文件夹是否存在,如果不存在就创建,反之不创建
if(!f.exists()){
f.mkdir();
}
//System.out.println(f.mkdir());
String x = "D:/用户信息/user01.txt";
String z = "D:/用户信息/user02.txt";
//创建文件
File file = new File(x);
/*
判断文件是否存在,存在则删除,不存在则创建
*/
if(!file.exists()){
file.createNewFile();
}
else{
file.delete();
}
File file_ = new File(z);
/*
判断文件是否存在,存在则删除,不存在则创建
*/
if(!file_.exists()){
file_.createNewFile();
}
else{
file_.delete();
}
/*
System.out.println(file.createNewFile());
System.out.println(file.exists()); //判断文件是否存在
System.out.println(file.isFile()); //判断***.txt是否是文件类型
*/
Register re = new Register();
String y = "\r\n";
String y1 = "姓 名:";
String y2 = "身份证号:";
String y3 = "登陆账号:";
String y4 = "密 码:";
String y5 = "转账账号:";
String s1,s2,s3,s4,s5,s6,s7,s8; //定义变量来接收数据
System.out.println("-------请输入你的身份信息信息完成登陆账号注册!-------");
System.out.println("\n注意;姓名为汉字且长度为4!\n 身份证号为18位");
System.out.println(" 账号长度在1-19之间!\n 密码长度为6且只能是数字!\n");
/*
调用Register类中的方法
*/
re.setUserName();
re.setUserId();
re.setBankId();
re.setIdPasswords();
s1 = re.getUserName();
s2 = re.getUserId();
s3 = re.getBankId();
s4 = re.getIdPasswords();
FileWriterTest(x,y1,s1,y2,s2,y3,s3,y4,s4,y);
System.out.println("\n-------请输入你的身份信息完成转账账号注册!-------");
re.setUserName();
re.setUserId();
s5 = re.getUserName();
s6 = re.getUserId();
/*
判断在身份证相同的情况下,姓名是否相同,若不同,则重新注册。反之,继续。
*/
if(s6.equals(s2)){
if(s5.equals(s1)){}
else{
System.out.println("\n非法信息!该身份证已被注册且其对应的姓名信息不符!");
System.out.println("\n----------请重新完成注册!---------");
main(args); //调用主方法
}
}
re.ZhuCe(s3);
s7 = re.getBankId();
s8 = re.getIdPasswords();
FileWriterTest(z,y1,s5,y2,s6,y5,s7,y4,s8,y);
System.out.println("----注册完成!你可以前往ATM登录完成相关业务-----");
System.out.println("\n退出中,请等待......\n");
}
/*
向所给文件中写入内容
*/
public static void FileWriterTest(String x,String y1,String s1,String y2,String s2,String y3,String s3,String y4,String s4,String y){
try{
FileWriter writer = new FileWriter(x,true);
writer.write(y1);
writer.write(s1);
writer.write(y); //换行
writer.write(y2);
writer.write(s2);
writer.write(y); //换行
writer.write(y3);
writer.write(y); //换行
writer.write(s3);
writer.write(y); //换行
writer.write(y4);
writer.write(y); //换行
writer.write(s4);
writer.write(y); //换行
writer.write(y); //换行
writer.flush();
writer.close();
}
catch(IOException e){
System.out.println("Error:"+e);
}
}
}
注册完后,账号密码记录在D:/用户信息文件夹下,下面进行读取
Read.java
import java.io.*;
public class Read
{
static String bankAccount;
static String userPasswords;
public static void readLines(String fileName) throws Exception{
File file = new File(fileName);
BufferedReader read = new BufferedReader(new FileReader(file));
String s = null;
int count = 1;
while((s = read.readLine()) != null){ //使用readLine方法,一次读一行
if(count == 4){
bankAccount = s;
}
else if(count == 6){
userPasswords = s;
}
count++;
}
read.close();
}
String getId(){
return bankAccount;
}
String getMiMa(){
return userPasswords;
}
}
接下来就是实现简单的ATM功能了
ATM.java
import java.util.*;
public class ATM
{
Date date = new Date(); //定义Date类的对象date来输出实时时间
static String bankAccount01; //定义bankAccount01作为转账时所用的账号
static double money = 0.00; //定义并初始化金额为0.00元
static int count = 1; //定义count计数器记录输入密码错误的次数
static int count01 = 0; //定义count01计数器记录修改密码时输入密码错误的次数
static Boolean loop = true; //定义布尔类型变量loop作为登录时的while循环使用
static String zhangHao; //读取登录时键盘输入的账号
static String miMa; //读取登录时键盘输入的密码
static Boolean loop01 = true; //定义布尔类型变量loop01作为登录后的while循环使用
/*
登录成功后进行操作
*/
void Enter(String userPasswords,String bankAccount){
while(loop01){
Interface Interface = new Interface(); //调用Interface类中的构造方法
System.out.print("请输入指令(按回车键结束):");
Scanner reader = new Scanner(System.in);
if(reader.hasNextInt()){ //判断用户输入的指令是否合法
int ch = reader.nextInt(); //定义变量ch来读用户输入的指令
/*
if(ch != 1 && ch != 2 && ch != 3 && ch != 4 && ch != 5 && ch != 6){
System.out.println("--------------指令错误,请重新输入!-------------");
System.out.println();
continue;
}
*/
switch(ch){
/*
查询当前账号下的余额情况
*/
case 1:
balanceEnquiry balanceEnquiry = new balanceEnquiry(money); //创建并调用balanceEnquiry类的构造方法
continue;
/*
存放金额到目前登录的账号下
*/
case 2:
cunKuan add = new cunKuan(); //创建cunKuan类的对象add
add.setAddMoney(money); //调用cunKuan类中的setAddmoney方法
money = add.getAddMoney(); //调用cunKuan中的getAddMoney方法并把返回值赋给money
continue;
/*
根据余额的剩余情况来判断是否可以取出
*/
case 3:
quKuan reduce = new quKuan(); //创建quKuan类的对象reduce
reduce.setReduce(money); //调用quKuan类中的setReduce方法
money = reduce.getReduce(); //调用qnKuan中的getReduce方法并把返回值赋给money
continue;
/*
输入密码判断是否正确,若正确,则可以修改密码
*/
case 4:
/*
调用changePasswords类中的方法
*/
changePasswords cP = new changePasswords();
userPasswords = cP.changePasswords(userPasswords,count);
count01 = cP.Count();
continue;
/*
转账汇款(本账号不能给本账号转账)
*/
case 5:
zhuanZhang zZ = new zhuanZhang(); //创建zhuanZhang类的对象zZ
zZ.zhuanZhang(bankAccount01,bankAccount); //调用zhuanZhang类中的zhuanZhang方法
zZ.setZhuanZhang(money); //调用zhuanZhang类中的setZhuanZhang方法
money = zZ.getZhuanZhang(); //调用zhuanZhang类中的getZhuanZhang方法并把返回值赋给money
continue;
/*
退出ATM
*/
case 6:
System.out.println("------------欢迎你的再次光临ATM!----------------");
System.exit(0); //退出ATM
/*
其他情况处理
*/
default:
System.out.println("\n--------------指令错误,请重新输入!-------------\n");
System.out.println();
continue;
}
}
else{
System.out.println("\n-----------输入的指令非法!---------------\n");
Enter(userPasswords,bankAccount); //使用递归,调用Enter()方法
}
}
}
/*
主类
*/
public static void main(String[] args) throws Exception
{
try{
Read read = new Read();
String fileName = "D:/用户信息/user01.txt";
read.readLines(fileName);
String bankAccount = read.getId(); //调用Read类中的getId方法并把返回值赋值给bankAccount
String userPasswords = read.getMiMa(); //调用Read类中的getMiMa方法并把返回值赋值给userPasswords
String fileName01 = "D:/用户信息/user02.txt";
read.readLines(fileName01);
bankAccount01 = read.getId();
String userPasswords01 = read.getMiMa();
while(loop){
System.out.println("\n----------------------登录ATM-----------------------\n");
System.out.print("请输入账号(按回车键结束):");
Scanner reader = new Scanner(System.in);
zhangHao = reader.nextLine();
if(zhangHao != null && zhangHao.equals(bankAccount)){ //判断输入的账号是否正确
for(;count <= 3; count++){ //for循环用来判断登录时输入密码的次数是否大于3次,若大于3次,则退出登录
System.out.println("----------------你有3次输入密码的机会!-------------");
System.out.println("-----------如输入3次错误密码,请重新登录!----------\n");
System.out.print("请输入密码(按回车键结束):");
miMa = reader.nextLine();
/*
因为栈内存、堆内存以及方法区的特殊性(存的是地址(引用))
*/
if(miMa != null && miMa.equals(userPasswords)){ //判断输入的密码是否正确
System.out.println("\n--------------------登录成功!----------------------");
ATM atm = new ATM(); //创建ATM类的对象atm
atm.Enter(userPasswords,bankAccount); //调用ATM类中的Enter方法
}
else{
System.out.println("\n-------------密码错误,请重新输入------------");
System.out.println("\n-------------你已输入错误密码"+count+"次!------------");
System.out.println("---------------------------------------------");
if(count >= 3){
System.out.println("------你已经输入3次密码错误,请重新登录!------");
loop = false;
}
}
}
}
else if(zhangHao.equals(bankAccount01)){
System.out.println("\n-----转账账号不能用于登录此ATM,请重新输入!-----");
}
else
System.out.println("\n-----账号不存在或账号错误,请重新输入!-----");
}
}
catch(java.io.FileNotFoundException e){
System.out.println("\n-----你还未注册相关账号,请完成相关注册后再登录!-----");
System.out.println("退出ATM......");
}
}
}
Interface.java
public class Interface
{
/*
ATM界面
*/
Interface(){
System.out.println("-------------------------------------------------------");
System.out.println("------------------------- ATM -------------------------\n");
System.out.println(" 1、查询余额 ");
System.out.println(" 2、 存款 ");
System.out.println(" 3、 取款 ");
System.out.println(" 4、修改密码 ");
System.out.println(" 5、转账汇款 ");
System.out.println(" 6、退出ATM ");
System.out.println("\n------------输入相应指令,可完成相应任务------------\n");
}
}
balanceEnquiry.java
import java.util.*;
public class balanceEnquiry
{
Date date = new Date(); //定义Date类的对象date来输出实时时间
/*
查询余额
*/
balanceEnquiry(double money){
System.out.println("----------------------------------------------------");
System.out.println("---------------------查询余额-----------------------\n");
System.out.println("----------当前余额:"+money+"元----------");
System.out.print(" ");
System.out.println(date.toString());
System.out.println("----------------------------------------------------");
}
balanceEnquiry(){
}
}
cunKuan.java
import java.util.*;
public class cunKuan
{
Date date = new Date(); //定义Date类的对象date来输出实时时间
Scanner reader = new Scanner(System.in); //定义Scanner类变量的对象reader
static double money01; //定义余额
static double money02; //定义存入金额
/*
存款
*/
void setAddMoney(double money){
System.out.println("----------------------------------------------------");
System.out.println("-------------------------存款-----------------------");
System.out.println();
money01 = money; //把主类中的所剩余额赋给cunKuan类中的余额
System.out.print("请输入你要存放的金额(按回车键结束):");
try{
double money02 = reader.nextDouble(); //存入金额
/*
判断存入的金额是否是100的倍数,若满足是100的倍数可存入,反之,不可以存款
*/
if(money02 % 100 == 0 && money02 <= 100000 && money02 >= 0){
money01 = money01 + money02; //把存入金额加上所剩余额赋给当前余额
System.out.println("----------存入金额:"+money01+"元----------");
System.out.println("----------当前余额:"+money01+"元----------"); //显示当前余额
System.out.print(" ");
System.out.println(date.toString()); //显示实时时间
System.out.println("----------------------------------------------------");
}
else if(money02 > 100000){
System.out.println("\n---一次最多存款100000元,请分批存入!---\n");
}
else if(money02 < 0){
throw new NegativeException();
}
else{
System.out.println("\n金额不能存入(输入金额必须为100的倍数)!\n");
}
}
catch(java.util.InputMismatchException e) //输入不匹配异常
{
System.out.println("\n-----发生异常:输入指令非法!(输入不匹配)-----");
System.out.println("\n即将退出存款界面,跳转到ATM界面,请等待......");
}
catch(NegativeException e){ //负数异常
System.out.println("\n-----"+e.warnMess()+"-----");
System.out.println("\n即将退出存款界面,跳转到ATM界面,请等待......");
}
}
double getAddMoney(){
return money01; //返回当前余额
}
}
quKuan.java
import java.util.*;
public class quKuan
{
Date date = new Date(); //定义Date类的对象date来输出实时时间
Scanner reader = new Scanner(System.in); //定义Scanner类变量的对象reader
static double money01; //定义余额变量
static double money02; //定义取款金额变量
/*
取款
*/
void setReduce(double money){
money01 = money; //把主类中的所剩余额赋给qnKuan类中的余额
Boolean loop02 = true; //定义布尔类型变量loop02作为while循环使用
while(loop02){
System.out.println("--------------------------------------------------");
System.out.println("------------------------取款----------------------");
System.out.println();
System.out.println(" 1、100元 ");
System.out.println(" 2、500元 ");
System.out.println(" 3、1000元 ");
System.out.println(" 4、2000元 ");
System.out.println(" 5、3000元 ");
System.out.println(" 6、其它金额 ");
System.out.println(" 7、退出取款 ");
System.out.println("\n-----------输入相应指令,可完成相应任务-----------");
System.out.println("--------注:其它金额不能同以上金额相等!----------\n");
System.out.print("请输入指令(按回车键结束):");
int zh;
try{
zh = reader.nextInt(); //定义变量zh来读用户输入的指令
/*
if(zh != 1 && zh != 2 && zh != 3 && zh != 4 && zh != 5 && zh != 6 && zh != 7){
System.out.println("\n-----------指令错误,请重新输入!----------");
continue;
}
*/
switch(zh){
case 1:
if(money01 >= 100){
money01 = money01 - 100;
System.out.println("------------取出100元-----------");
System.out.println("------当前余额:"+money01+"元------");
System.out.print(" ");
System.out.println(date.toString());
System.out.println("----------------------------------------------------");
break;
}
else{
System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
continue;
}
case 2:
if(money01 >= 500){
money01 = money01 - 500;
System.out.println("------------取出500元-----------");
System.out.println("--------当前余额:"+money01+"元-------");
System.out.print(" ");
System.out.println(date.toString());
System.out.println("---------------------------------------------------");
break;
}
else{
System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
continue;
}
case 3:
if(money01 >= 1000){
money01 = money01 - 1000;
System.out.println("--------------取出1000元-----------");
System.out.println("--------当前余额:"+money01+"元-------");
System.out.print(" ");
System.out.println(date.toString());
System.out.println("----------------------------------------------------");
break;
}
else{
System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
continue;
}
case 4:
if(money01 >= 2000){
money01 = money01 - 2000;
System.out.println("-------------取出2000元----------");
System.out.println("----------当前余额:"+money01+"元---------");
System.out.print(" ");
System.out.println(date.toString());
System.out.println("----------------------------------------------------");
break;
}
else{
System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
continue;
}
case 5:
if(money01 >= 3000){
money01 = money01 - 3000;
System.out.println("------------取出3000元-----------");
System.out.println("---------当前余额:"+money01+"元--------");
System.out.print(" ");
System.out.println(date.toString());
System.out.println("----------------------------------------------------");
break;
}
else{
System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
continue;
}
case 6:
try{
System.out.print("\n请输入你要取出的金额(按回车键结束):");
money02 = reader.nextDouble(); //定义变量money02来读用户输入的其他金额
if(money02 % 100 == 0){
/*
判断是否与100,500,1000,2000,3000重复
*/
if(money02 != 100 && money02 != 500 && money02 != 1000 && money02 != 2000 && money02 != 3000 && money02 <=5000 && money02 >= 0){
if(money01 >= money02){
money01 = money01 - money02;
System.out.println("------------取出"+money02+"元-----------");
System.out.println("---------当前余额:"+money01+"元---------");
System.out.print(" ");
System.out.println(date.toString());
System.out.println("----------------------------------------------------");
}
else{
System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
continue;
}
}
else if(money02 < 0){
throw new NegativeException();
}
else if(money > 5000){
System.out.println("---一次最多取出5000元,请分批取出!---");
break;
}
else{
System.out.println("---金额非法!(输入的金额同100、200、500、1000、2000、3000)---");
break;
}
}
else{
System.out.println("无法取出金额(输入金额必须为100的倍数)!");
}
}
catch(java.util.InputMismatchException e){ //输入不匹配异常
System.out.println("\n-----发生异常:输入金额非法!(输入不匹配)-----");
break;
}
case 7:
loop02 = false;
System.out.println("\n退出取款中,请等待......");
break;
default:
System.out.println("\n-----------指令错误,请重新输入!----------");
continue;
}
}
catch(java.util.InputMismatchException e){ //输入不匹配异常
System.out.println("\n------发生异常:输入非法!(输入不匹配)-----");
System.out.println("\n即将退出取款界面,跳转到ATM界面,请等待......");
break; //返回到ATM界面
}
catch(NegativeException e){ //负数异常
System.out.println("\n-----"+e.warnMess()+"-----");
System.out.println("\n即将退出取款界面,跳转到ATM界面,请等待......");
break; //返回到ATM界面
}
}
}
double getReduce(){
return money01;
}
}
changePasswords.java
import java.util.*;
public class changePasswords
{
static Boolean loop = true; //定义布尔类型变量loop作为while循环使用
static String Passwords; //定义密码变量Passwords
int count01; //定义count01计数器记录修改密码时输入密码错误的次数
/*
修改密码
*/
String changePasswords(String userPasswords,int count){
count01 = count;
Passwords = userPasswords;
System.out.println("----------------------------------------------------");
System.out.println("\n-----------------------修改密码---------------------\n");
while(loop){
if(count01 >= 3){
System.out.println("你已经输入3次错误密码,本次登录不能继续修改密码!");
System.out.print("\n退出修改密码,跳转到ATM界面中,请等待......\n");
break;
}
else{
Scanner reading = new Scanner(System.in);
System.out.print("你有3次输入原密码的机会,若3次都错误,则退出ATM.\n");
if(count01 < 3){
System.out.print("请输入原密码(按回车键结束):");
String sc = reading.nextLine();
if(sc != null && sc.equals(Passwords)){
Passwords = setPasswords(Passwords);
break;
}
else{
System.out.println("---------------密码错误!-------------");
count01++;
if(count01 < 3){
System.out.println("-----你已经输入错误密码"+count01+"次"+",是否继续修改密码?-----");
System.out.println("-----若继续,请输入 y 或 Y ;反之输入其它,退出修改密码!-----\n");
System.out.print("输入指令:");
Scanner read = new Scanner(System.in);
String cmd = read.nextLine(); //定义变量cmd来接收键盘输入的命令
if(cmd.equals("y") || cmd.equals("Y")){
continue;
}
else{
System.out.print("\n退出修改密码,返回ATM界面中,请等待......\n");
break;
}
}
else
System.out.println("\n------------欢迎你的再次光临ATM!----------------");
}
}
}
}
return Passwords;
}
String setPasswords( String Passwords){
Scanner reading = new Scanner(System.in);
System.out.print("请输入新密码(按回车键结束):");
Passwords = reading.nextLine();
for(int i=0;i<Passwords.length();i++){ //遍历每一个字符
char ch = Passwords.charAt(i);
if(ch >= '0' && ch <= '9'){
}
else{
System.out.println("输入的密码中存在非数字,请重新输入!");
setPasswords(Passwords);
}
}
System.out.println("你的新密码:"+Passwords);
return Passwords;
}
int Count(){ //将输入错误密码的次数作为返回值返回
return count01;
}
}
zhuanZhang.java
import java.util.*;
public class zhuanZhang
{
Date date = new Date(); //定义Date类的对象date来输出实时时间
static double money;
double money01;
double money02 = 0;
int cmd;
/*
转账
*/
void zhuanZhang(String bankAccount01,String bankAccount){
String id;
System.out.println("----------------------------------------------------");
System.out.println("-----------------------转账汇款---------------------\n");
System.out.println("----------请输入你所转账的用户账号!----------");
System.out.print("转账账号:");
Scanner reading = new Scanner(System.in);
Boolean loop = true;
while(loop){
id = reading.nextLine();
if(id.equals(bankAccount01)){
cmd = 1;
}
else
cmd = 2;
switch(cmd){
case 1:
loop = false;
break;
case 2:
if(id.equals(bankAccount)){
System.out.print("\n不允许给现在所登陆的账号转账!请重新输入:");
continue;
}
else{
System.out.println("\n账号错误或账号不存在,请重新输入:");
continue;
}
}
}
}
void setZhuanZhang(double money){
this.money = money;
Boolean loop01 = true;
while(loop01){
try{
System.out.print("请输入你需要转账的金额(按回车键结束):");
Scanner reader = new Scanner(System.in);
money01 = reader.nextDouble();
/*
保证余额充足的条件下,限制一次转账的最大额度为10000
*/
if(money >= money01 && money01<= 10000 && money01 >= 0){
money = money - money01;
money02 = money02 + money01;
System.out.println("----------转出余额:"+money01+"元----------");
System.out.println("----------当前余额:"+money+"元----------");
System.out.print(" ");
System.out.println(date.toString()); //显示实时时间
loop01 = false;
}
else if(money01 > 10000){
System.out.println("\n----一次最多转账10000元,请分批转出!----\n");
continue;
}
else if(money01 < 0){
throw new NegativeException();
}
else{
System.out.println("\n----------余额不足,请重新输入金额!----------\n");
System.out.println("----------如需退出转账,请输入E/e,反之输入其它!----------");
System.out.print("输入指令:");
Scanner read = new Scanner(System.in);
String cmd = read.nextLine(); //定义变量cmd来接收键盘输入的命令
if(cmd.equals("e") || cmd.equals("E")){
System.out.print("退出转账,返回ATM界面中,请等待......");
break; //返回到ATM界面
}
else{
continue;
}
}
}
catch(java.util.InputMismatchException e){ //输入不匹配异常
System.out.println("\n------发生异常:输入金额非法!(输入不匹配)-----");
System.out.println("\n即将退出转账界面,跳转到ATM界面,请等待......");
break; //返回到ATM界面
}
catch(NegativeException e){ //负数异常
System.out.println("\n-----"+e.warnMess()+"-----");
System.out.println("\n即将退出转账界面,跳转到ATM界面,请等待......");
break; //返回到ATM界面
}
}
}
double getZhuanZhang(){
return money;
}
}
这里我单独写了一个异常
NegativeException.java
public class NegativeException extends Exception
{
final String message = "金额非法!(金额不能存在负数)";
public String warnMess(){
return message;
}
}