package com.jredu.ch03;

 import java.util.Scanner;

 public class Atmmmmmmmmmm {

         static int totalMoney=20000;//用户的银行卡余额

         public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
//输入密码,最多输入三次
for(int i=0;i<3;i++) {
System.out.println("请输入密码,您还可以再输入"+(3-i)+"次");
switch (input.nextInt()) {
case 111111:
/**
* 选择金额
*/
System.out.println("输入密码正确");
while(true){
System.out.println("请选择金额:0.手动输入金额\t1.100元\t2.300元3.500元\t4.1000元\t5.3000元\t6.5000元");
String num=input.next();
switch(num) {
case "0":
System.out.println("请输入金额,不得低于100元,不得高于1000,必须是100元的倍数");
int money=input.nextInt();
if(money%100!=0||money<100||money>1000) {
System.out.println("输入有误,请重新输入");
} else {
if(totalMoney-money>0) {
totalMoney-=money;
System.out.println("您取款"+money+"元,剩余"+totalMoney+"元");
} else if(totalMoney-money==0) {
totalMoney-=money;
System.out.println("您取款"+money+"元,剩余"+totalMoney+"元");
System.out.println("谢谢使用,再见");
return;
} else {
System.out.println("余额不足,请重新选择金额");
}
}
System.out.println("是否继续(y/n)");
break;
case "1":
//100元
totalMoney-=100;
System.out.println("您取款100元,剩余"+totalMoney+"元");
if(totalMoney>0) {
System.out.println("是否继续(y/n)");
} else {
System.out.println("谢谢使用,再见");
return;
}
break;
case "2":
//300元
if(totalMoney-300>0) {
totalMoney-=300;
System.out.println("您取款300元,剩余"+totalMoney+"元");
} else if(totalMoney-300==0) {
totalMoney-=300;
System.out.println("您取款300元,剩余"+totalMoney+"元");
System.out.println("谢谢使用,再见");
return;
} else {
System.out.println("余额不足,请重新选择金额");
}
System.out.println("是否继续(y/n)");
break;
case "3":
//500元
if(totalMoney-500>0) {
totalMoney-=500;
System.out.println("您取款500元,剩余"+totalMoney+"元");
} else if(totalMoney-500==0) {
totalMoney-=500;
System.out.println("您取款500元,剩余"+totalMoney+"元");
System.out.println("谢谢使用,再见");
return;
} else {
System.out.println("余额不足,请重新选择金额");
}
System.out.println("是否继续(y/n)");
break;
case "4":
//1000元
if(totalMoney-1000>0) {
totalMoney-=1000;
System.out.println("您取款1000元,剩余"+totalMoney+"元");
} else if(totalMoney-1000==0) {
totalMoney-=1000;
System.out.println("您取款1000元,剩余"+totalMoney+"元");
System.out.println("谢谢使用,再见");
return;
} else {
System.out.println("余额不足,请重新选择金额");
}
System.out.println("是否继续(y/n)");
break;
case "5":
//3000元
if(totalMoney-3000>0) {
totalMoney-=3000;
System.out.println("您取款3000元,剩余"+totalMoney+"元");
} else if(totalMoney-3000==0) {
totalMoney-=3000;
System.out.println("您取款3000元,剩余"+totalMoney+"元");
System.out.println("谢谢使用,再见");
return;
} else {
System.out.println("余额不足,请重新选择金额");
}
System.out.println("是否继续(y/n)");
break;
case "6":
//5000元
if(totalMoney-5000>0) {
totalMoney-=5000;
System.out.println("您取款5000元,剩余"+totalMoney+"元");
} else if(totalMoney-5000==0) {
totalMoney-=5000;
System.out.println("您取款5000元,剩余"+totalMoney+"元");
System.out.println("谢谢使用,再见");
return;
} else {
System.out.println("余额不足,请重新选择金额");
}
System.out.println("是否继续(y/n)");
break;
default:
System.out.println("数字输入错误,是否继续(y/n)");
//如果y继续,如果n退出
break;
}
while(true) {
char repeat=input.next().charAt(0);
if(repeat=='y') {
break;
} else if(repeat=='n') {
System.out.println("谢谢使用,再见");
return;
} else {
System.out.println("输入错误,请重新输入");
}
} }
default:
//密码错误
if(i==2) {
//如果超过三次提示输入密码错误
System.out.println("密码错误,请取卡");
}
break;
}
}
input.close();
} }

流程控制

用来控制程序中各种语句的执行顺序

Java中三种流程控制:

顺序结构、选择结构、循环结构

循环结构:while、do-while、for、foreach语句

跳转结构:break、continue、return跳出整个方法

多重if-slse选择结构

if-else与switch比较

绝大部分情况下switch会快一点,除非if-else第一个条件就为true

等值分支使用switch

while循环

符合条件循环继续执行,否则循环退出,先判断后执行

do-while 先执行一遍循环操作,在判断

do{

循环操作

}while(循环条件);

for(表达式①;②;④更新循环变量){

③循环操作

}

嵌套循环:先内循环再外循环

foreach循环

从开始到结束,效率最高,但不能像for循环那样定义范围

break:改变程序控制流

可跳出循环而执行循环后面的语句,还可用在switch

continue

只能用在循环里

跳出当前循环剩余的语句而执行下一次循环

return

作用:退出当前方法,返回上层调用方法处

每个方法都要有return语句,表示方法结束并返回结果

循环次数确定的情况下,通常选用for循环

循环次数不定,用while和do-while

ATM取款~~的更多相关文章

  1. 简单的ATM取款过程

    一个简单的ATM的取款过程是这样的:首先提示用户输入密码(pwd),最多只能输3次,超过三次则提示用户“密码已输入三次错误,请取卡.“结束交易.如果用户密码正确,在提示用户输入金额(money),AT ...

  2. for循环练习-----ATM取款

    要求: 代码: package com.jianglai.atm; import java.util.Scanner; public class ATM { public static void ma ...

  3. 两种atm取款方式

    1.//函数 密码 账号function User(username, password, account){ this.username = username; this.password = pa ...

  4. ATM取款小项目

    项目要求: 1.用户需要从控制台输入账号密码,账号或者密码不正确报异常 2.每日取款的金额有限制(100,30000),否则报异常 3.每次取款都要有记录,并在下一次取款时显示出来 思路: 1.先在& ...

  5. 高仿中国银行ATM系统

    温馨提示由于代码太多只是上传了ATM客户端部分,管理员和超级管理员还有数据库部分上传了工程包,可以直接点击https://i.cnblogs.com/Files.aspx去里面找.package At ...

  6. 带你揭开ATM的神秘面纱

    相信大家都用过ATM取过money吧,但是有多少人真正是了解ATM的呢?相信除了ATM从业者外了解的人寥寥无几吧,鄙人作为一个从事ATM软件开发的伪专业人士就站在我的角度为大家揭开ATM的神秘面纱吧. ...

  7. C#实现ATM自动取款机

    本篇用C#实现ATM自动取款机的一些功能.面临的第一个问题是:如何把与自动取款机相关的有形的.无形的方面抽象出来.大致如下: (1)关于用户帐号的类:Account(2)关于银行数据库的类:BankD ...

  8. ATM取款机优化需求的用例设计

    案例设计需求 有一个ATM取款系统,现对于取款功能进行了如何需求变更:碑只能取面额是100元(如取500,输出5张100元),现在功能修改为,可以取面额是10元.50元和100元的,其余功能不变,用户 ...

  9. Spring学习(三)

    1,Spring的事务管理机制 Spring事务管理高层抽象主要包括3个接口,Spring的事务主要是由他们共同完成的: l PlatformTransactionManager:事务管理器-主要用于 ...

随机推荐

  1. C# 6 与 .NET Core 1.0 高级编程 - C# 6 改进

    个人原创译文,转载请注明出处.有不对的地方欢迎指出与交流. 英文原文:Professional C# 6 and .NET Core 1.0 - What's New in C# 6 C# 6 改进 ...

  2. 龙珠超的新OP【限界突破×サバイバー】

    这首歌真的很燃 下载>>   限界突破×サバイバー 中文歌词 演唱:冰川清志 兴奋了!就去宇宙吧 最先端的“着迷”怎么样! 握在手中 突然想要大笑 糊里糊涂也习惯了吗! I can't g ...

  3. 改变placeholder字体的颜色

    /* Mozilla Firefox 19+ */ ::-moz-placeholder { color: #f00; } /* IE9+版本 */ input:-ms-input-placehold ...

  4. Spark源码分析之Spark Shell(上)

    终于开始看Spark源码了,先从最常用的spark-shell脚本开始吧.不要觉得一个启动脚本有什么东东,其实里面还是有很多知识点的.另外,从启动脚本入手,是寻找代码入口最简单的方法,很多开源框架,其 ...

  5. 【Java深入研究】2、JVM类加载机制

    一.先看看编写出的代码的执行过程: 二.研究类加载机制的意义 从上图可以看出,类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类 ...

  6. 分享jquery.cookie.js

    代码如下: /*! * jQuery Cookie Plugin v1.4.1 * https://github.com/carhartl/jquery-cookie * * Copyright 20 ...

  7. ARM处理器:开放者的逆袭

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 1981年,英国BBC电视台策划了一系列关于计算机的电视节目.但导演发现一个问题:怎么给没见过电脑的观众画 ...

  8. "table" is not mapped 解决方法

    现象:使用hql="from person" 出现" person is not mapped " 错误 配置文件如下:<hibernate-mappin ...

  9. jQuery中.bind() .live() .delegate() .on()的区别 和 三种方式写光棒事件 动画

    地狱的镰刀 bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数. $("a").bind("click",function(){ ...

  10. 【Java基础】反射机制

    反射 反射可以使我们很方便的创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代码链接.反射允许我们在编写和执行时,使我们的代码能够接入装载到JVM中的类的内部信息,而不是源代码中选定的类 ...