<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);">最近打算开始写博客,犹豫自己只是个java语言的初学者,所以现在的内容只是自己的一些学习笔记和做的一些小练习。</span>
希望能在csdn学到更多的 知识,成长自己!我在努力成为成为程序员的路上!
今天做的小小练习的模拟atm存取款,查询余额的功能,并且自定义两个异常。
模拟ATM的存取款操作。
定义一个ATM机类, 该类有私有属性金额banlance和有存款方法void deposit()、取款方法void withdraw()、显示余额double showBalance()和显示主页面show()方法---显示一些提示操作
如选择1,存款业务
            选择2,取款业务
选择3,查询余额业务
选择4,退出
注意:存钱与取钱金额均由键盘输入。
(1)考虑输入的存款金额小于0的异常处理NotNegativeNumber---这是一个自定义异常类,
(2)考虑输入的存款金额为非数值型的数据 如 “abc”的异常处理
(3)考虑取钱大于余额的异常处理InsufficientFundsException------这是一个自定义异常类),
(4)考虑输入的取款金额小于0的异常处理NotNegativeNumber,考虑输入的取款金额为非数值型的数据 如 “abc”的异常处理。若取钱数大于余额则作为异常处理InsufficientFundsException------这是一个自定义异常类),要定义好自己的异常类,并写一个测试类BankTest 测试上面的ATM的功能

代码实现:

package homework;import java.util.InputMismatchException;
import java.util.Scanner;class Atm {private double banlance;double num;private String ID;public Atm(String ID) {this.ID = ID;}public void Deposit(double banlance) throws NotNegativeNumber {if (banlance < 0) {throw new NotNegativeNumber();}if (this.banlance != 0) {banlance = this.banlance + banlance;} elsethis.banlance = banlance;}public void withDraw(double Money) throws InsufficientFundsException, NotNegativeNumber {if (Money > banlance) {throw new InsufficientFundsException();} elsebanlance = banlance - Money;}public void showBanlance() {System.out.println("您的余额为:" + banlance);}public void show() {System.out.println(ID + " 用户您好,欢迎使用本ATM");System.out.println("选择1,存款业务");System.out.println("选择2,取款业务");System.out.println("选择3,查询余额业务");System.out.println("选择4,退出");}
}class NotNegativeNumber extends Exception { //自定义异常public NotNegativeNumber() {}
}class InsufficientFundsException extends Exception { //自定义异常public InsufficientFundsException() {}
}public class BankTest {public static void main(String[] args) {Atm atm = new Atm("12345-3455");atm.show();boolean flag = true;while (flag) {int num = new Scanner(System.in).nextInt();switch (num) {case 1:System.out.println("请输入存款金额");while (true) {try {double banlance = new Scanner(System.in).nextDouble();atm.Deposit(banlance);atm.show();break;} catch (NotNegativeNumber e) {System.out.print("请输入正确的金额,不能为负数");} catch (InputMismatchException e) {System.out.println("输入正确的金额,不能为字符");}}break;case 2:System.out.println("输入取款金额");while (true) {try {double money = new Scanner(System.in).nextDouble();atm.withDraw(money);atm.show();break;} catch (NotNegativeNumber e) {System.out.println("输入正确的金额,不能为负数");} catch (InsufficientFundsException e) {System.out.println("抱歉,余额不足");}}break;case 3:atm.showBanlance();atm.show();break;case 4:flag = false;System.out.println("交易完成,请取回您的卡");break;}}}}

JAVA基础作业练习—自定义异常之模拟ATM相关推荐

  1. 二-Java基础-作业-基础语法

    文章目录 前言 二-Java基础-环境搭建-Eclipse下载步骤和安装步骤2 二-Java基础-环境搭建-创建工程3 Java-环境搭建 总结 前言 # 二-Java基础-环境搭建-JDK-11.0 ...

  2. Java基础练习题7--【猜拳游戏,模拟双色球功能,统计词语次数,判断大写字母,敏感词过滤程序】

    文章目录 1.猜拳游戏 2.模拟双色球摇奖功能 3.统计某个词语的出现次数 4.判断输入的字母是否为大写字母 5.编写敏感词过滤程序 1.猜拳游戏 1表示石头,2表示剪刀,3表示布 接收用户输入的拳 ...

  3. java基础语法day20(Map、模拟斗地主发牌)

    第1章 Map接口 1.1 Map接口概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. 1. Collection中的集合, ...

  4. java基础 作业(一)

    题目: 跳水比赛,8个评委打分.运动员的成绩是8个成绩去掉一个最高分,去掉一个最低分,剩下的6个分数 的平均分就是最后 得分.使用以为数组实现打分功能 .请把打分最高的评委和最低的评委找出来. 解析: ...

  5. java基础多线程抢红包_java多线程模拟抢红包功能

    今天有朋友问我一道面试题,有5个人抢5个红包,可重复抢,用多线程程序实现,实现方式有多种,分享一下我的思路:应用了阻塞队列的特性. /** * Created by zhanglinqiang on ...

  6. java模拟atm 课程设计_java课程设计ATM机(图形用户)代码

    [实例简介] 这是我在大二的时候学java时自己写的一个模拟ATM机的小程序,用了图形用户界面,数据库,绝对原创 [实例截图] [核心代码] atm └── atm ├── bin │   └── c ...

  7. java初级atm取款机,java基础:模拟ATM取款机

    package com.atm; import java.util.Scanner; /** * ATM类实现 * * @author 向往的生活 */ public class ATM { publ ...

  8. Java模拟ATM运行过程(第一版)

    该版本只有一个银行且没有并发,没有数据库,也没有GUI--主要是能力不够,而且飞哥说这个版本还是面向过程的,牛人给指点下. 1 /*想了想这个数组还是放在ATM里会比较好,直接放在主类里不行 2 * ...

  9. java模拟atm_Java第一课——模拟ATM机

    Java第一课--模拟ATM机 开学第一节Java课,跟之前老师强调的一样--上课简单说了两句就直接开始了考试. 总结一下第一次做Java遇到的问题: 第一个是老师一直在强调要先考虑整体的思路,先把整 ...

最新文章

  1. PHP CodeBase: 将时间显示为“刚刚”“n分钟/小时前”等
  2. python快速自学方式-Python自学之路 ,自学Python快速入门方法
  3. 核密度估计python_非参数估计:核密度估计KDE
  4. MyBatis-Oracle-selectKey返回主键
  5. Linux JDK升级
  6. jQuery Pagination Ajax分页插件中文详解
  7. php 字符串与数字相加,注意!PHP中字符串与数字的比较
  8. [改善Java代码]避免对象的浅拷贝
  9. Struts2-03-拦截器(BOS物流项目用户登录拦截)
  10. python学习笔记 - 函数: 传参列表副本(不改变列表本身)
  11. 计算机组成原理(3)——存储器
  12. TB6560 驱动板资料
  13. 1.3寸IIC OLED SH1106和Arduino库的适配性鸡肋问题
  14. 从0-1搭建一个服务器(以前不懂事,现在只想搞钱)
  15. 基于JavaWeb的互联网金融创意众筹网站系统
  16. .NetCore Mediator的简单使用
  17. 抓起整个网站离线浏览的软件Teleport Pro
  18. 利用OPC技术实现双网冗余系统的通讯驱动
  19. 迈出高效管理步伐 8thManage助IT分销行以快制胜
  20. 洛谷 4828 Nagisa loves Tomoya 题解

热门文章

  1. 24位行业精英:2018,区块链教会我最重要的一件事 |链捕手
  2. 电脑考证一级Word文档
  3. 送5本刚刚出版的《大数据时代生存法则》
  4. 验证用户名重复注册PHP
  5. mjpeg-streamer移植
  6. java usb摄像头_Android中多USB摄像头解决方案——UVCCamera源码分析(一)
  7. 刚刚开始学C语言的懵懂
  8. 全景拍摄中的全景接片是什么?怎么操作?
  9. OSPF(第六天笔记)
  10. 霍比特E姐有约|Exploit Network 如何打造 Web3.0 匿名支付协议