循环取款java_JAVA-循环体小练习——ATM取款机

需求描述:

假设一个简单的ATM机的取款过程为:

首先提示用户输入密码,假设默认密码为111111,最多只能输入3次,

超过3次则提示用户“密码错误,请取卡”,结束交易。

如果用户密码正确,再提示用户选择金额,

“请输入0到6中任意数字选择对应钱数:0-手动输入金额,1-100元, 2-300元,

3-500元, 4-1000元, 5-3000元, 6-5000元”。

输入数字如果错误,提示“输入错误,是否继续 Y/N”,选择Y重新提示输入钱数编号,

选择N提示“输入错误,请取卡!”。选择数字为1到6,打印对应钱数,

并提示“是否继续 Y/N”。选择数字0,ATM机只能输出100元纸币,

自定义钱数要求最低为100元,最高为1000元。如果用户输入的金额符合上述要求,

则打印输出用户取的钱数,并提示“取款完成,是否继续Y/N”;否则输出一句话“金额错误,

是否继续 Y/N”,如果用户输入Y,提示用户重新选择取款金额,如果用户输入 N,

打印“交易取消,请取卡!”

ps:取款成功后,应该提示用户是否继续,总取款金额不能超过2万

【解题思路】

1、验证密码

① 密码正确,继续执行下面操作;

② 密码错误3次,return;

2、取款操作。全部包含在 while循环内部。

① 提示选择编号;

② 根据编号,给money赋值。用switch结构实现。

1~6:直接给money赋固定值,0:手动赋值操作;

③ 验证取款是否成功。money-本次取款金额,moneySum-本次取款之前的总金额

判断moneySum+money是否>20000,3种情况:

>2000 本次取款超额,但moneySum之前并不足20000,继续下次循环;

=2000 取完本次money后,刚好满额。money可以加到sum上,然后return;

<2000 取完本次money后,仍未上限。money可以加到sum上,继续下次循环。

④ 验证是否继续,while-if结构实现,有3种情况:

Y/y 将小循环break,继续执行取款大循环;

N/n 直接return,停止所有操作;

其他 continue,继续执行小循环,重复输入Y/N

代码:

1        Scanner sc=newScanner(System.in);2 inti;3 for(i=0;i<3;i++){4 System.out.print("请输入密码:");5 int pwd=sc.nextInt();6 if(pwd==111111){7 break;8 }9 }10 if(i>=3){11 System.out.print("密码错误,请取卡!");12 return;13 }14 System.out.println("***********请根据序号进行取款********");15 //取款操作

16 int moneysum=0;//取款总金额

17 int money=0;//本次取款金额

18 boolean isGo=true;19 while(isGo){20 System.out.println("0-手动输入金额");21 System.out.println("1-100元\t\t2-300元\t\t3-500元");22 System.out.println("4-1000元\t\t5-3000元\t\t6-5000元");23 System.out.print("请选择:");24 int choosenum=sc.nextInt();25 moneysum+=money;26 //根据取款编号,进行取款操作

27 switch(choosenum){28 case 1:29 money=100;30 break;31 case 2:32 money=300;33 break;34 case 3:35 money=500;36 break;37 case 4:38 money=1000;39 break;40 case 5:41 money=3000;42 break;43 case 6:44 money=5000;45 break;46 case 0:47 System.out.print("请输入金额:");48 int shoudong=sc.nextInt();49 if(shoudong%100==0&&shoudong>=100&&shoudong<=1000){50 money=shoudong;51 }else{52 System.out.print("金额错误,只能输入100到1000中100整数倍的金额");53 }54 break;55 default:56 System.out.println("输入错误,");57 break;58 }59 //验证总取款金额是否超过20000

60 if(moneysum+money>20000){61 System.out.print("取款已超出单日上限,本次取款失败,本日剩余可取款金额为"+(20000-moneysum)+",");62 moneysum-=money;63 }else if(moneysum+money==20000){64 System.out.println("您共取出20000元,已达到单日取钱上限,请取卡");65 return;66 }else{67 System.out.print("您共取出"+(moneysum+money)+"元,");68 }69 //验证是否继续

70 while(true){71 System.out.print("是否继续(y/n):");72 //输入字符: 先输入字符串,再截取字符串的第0个字符

73 char c = sc.next().charAt(0);74 System.out.println();75 if(c=='n' || c=='N'){76 //当输入为n时,修改标志变量,终止外层大循环。

77 isGo = false;78 break;79 }else if(c=='y' || c=='Y'){80 break;81 }else{82 System.out.print("输入有误,");83 }84 }85 }86 System.out.println("感谢您的使用!");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值