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=new Scanner(System.in); 2 int i; 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("感谢您的使用!");
转载于:https://www.cnblogs.com/hjcblog/p/8638818.html
JAVA-循环体小练习——ATM取款机相关推荐
- 【Java课设】--ATM取款机(Gui界面)
[Java课设]–ATM取款机(Gui界面)
- java初级atm取款机,java基础:模拟ATM取款机
package com.atm; import java.util.Scanner; /** * ATM类实现 * * @author 向往的生活 */ public class ATM { publ ...
- java综合练习之ATM取款机
题干: 编写一个ATM取款机小程序, 我会对你的程序进行若干次测试,以此来判断你是否完成了本关任务. 第一次测试会输入: 100 2 999 100 1 需要你的程序输出: 方法: 程序挺简单,但是我 ...
- atm取款机 oracle实战训练_使用JavaScript实现ATM取款机
ATM机需求描述如下: 假设一个简单的ATM机的取款过程为: 首先提示用户输入密码(password),假设默认密码为111111,最多只能输入3次, 超过3次则提示用户"密码错误,请取卡& ...
- ATM取款机小程序——Java
问题描述:编写小程序实现对应功能,效果如图: 红框是需要输入的数据. 思路:取款循环进行无数次,故用while循环 总金额为1000,Scanner输入 import java.util.Scanne ...
- java编写一个ATM取款机小程序
此程序效果图如下: 一下为源代码: package step4; import java.util.Scanner; public class ForPractice4 { public static ...
- java小项目 ATM机(简易版)
目录 说明 项目介绍 功能介绍 结构图 各模块代码 登录界面 服务选择界面 存取款界面 修改密码模块 转账模块 总代码 说明 简单做了一个java的ATM机项目.本项目只能作为一个简单的运行程序.因为 ...
- JAVA 实现ATM取款机
ATM取款机 import java.util.Scanner;public class ForPractice4 {public static void main(String[] args) {/ ...
- c语言生成16进制随机数,C语言实战篇——模拟ATM取款机,最强大脑小游戏,进制转换,产生不同的随机数...
2019.11.24 模拟ATM取款机 如图为登录界面 银行.png #include int main(){ printf("----------------------------\n& ...
最新文章
- 玩纸牌游戏计算机教案,小班数学好玩的扑克牌教案
- 老姚浅谈:怎么学JavaScript?
- 学习笔记 - MarkDown 语法
- 学术前沿 | DeepMind最新成果:图表示学习算法推理~46页ppt
- 江淮大众正式更名,今日盘中涨停!
- 如何使用无线连接来使Android调试手机
- if函数判断单元格颜色_IF条件函数10大用法完整版,全会是高手,配合SUMIF,VLOOKUP更逆天...
- 【面试】5道JAVA笔试算法题
- 安卓微信自动抢红包插件优化和实现
- C#去除gif图片水印的记录
- 微信小程序--保存图片到相册功能实现
- 【运维心得】你不知道,运维也要写代码(3)
- 欧拉定理的内容证明及欧拉函数的推导
- html2canvas生成长图片时导致背景图渲染不全问题
- java高级之xml
- 如何培养孩子的金钱价值观
- 纠删码在实时视频流中的应用丨Dev for Dev 专栏
- 【阿克曼小车导出URDF模型教程】
- PET(聚对苯二甲酸乙二醇酯)——百度百科
- iOS 4.3.5 红雪不完美越狱教程
热门文章
- 共享一个资源(卖票)
- 洛谷 1057——传球游戏(递推与递归二分)
- JAVA(小技巧--List)
- STM32F407VG uCOS-II2.91 IAR工程 以及uCOS使用库编译的方法
- 美国计算机科学专业申请要求,美国计算机科学专业好申请吗?申请要求高不高...
- 函数 单片机glint_GL 库函数
- sqlite.interop.dll 请确保此文件可以访问_不用数据线,一秒让电脑和iphone快速传文件...
- m.2接口和nvme区别_M.2硬盘的分类和区别
- hive提供oracle接口嘛,Hive是个什么东东
- 阿里巴巴DevOps实践指南 | 为什么DevOps的必然趋势是BizDevOps?