public class ATM {

public static void main(String[] args) {

// 开立帐号

Account account = new Account();

// 在 account 中存 10,000 元

account.setBalance(10000);

// 检查 account 中的存款

System.out.println("帐户原始金额 : " + account.getBalance() + " 元");

// 小明, 小华与小英一起对 account 进行提款的动作

WithDraw s1 = new WithDraw("小明", account, 5000); // 小明 在 account 中提 5000 元

WithDraw s2 = new WithDraw("小华", account, 2000); // 小华 在 account 中提 2000 元

WithDraw s3 = new WithDraw("小英", account, 4000); // 小英 在 account 中提 4000 元

s1.start();

s2.start();

s3.start();

}

}

//帐户

class Account {

private int balance; // 帐户馀额

public int getBalance() { // 取得帐户馀额

return balance;

}

public void setBalance(int money) { // 设定帐户馀额

balance = money;

}

// 提款方法

public void withDraw(Account account, int withdrawMoney) {

String tName = Thread.currentThread().getName(); // tName=提款人

System.out.println(tName + " 开始提款 ... ");

boolean withDrawStatus; // 提款状态 说明:false=提款失败, true=提款成功

synchronized(ATM.class) {

int tmpBalabce = account.getBalance(); // 取得最新帐户馀额

//用 for-loop 模拟提款时系统所花的时间

for(double delay=0;delay<99999999;delay++) {

// ... 提款进行中 ...

}

tmpBalabce = tmpBalabce - withdrawMoney; // 最新帐户馀额 - 欲提款金额 (用来判断是否馀额足够的依据)

if (tmpBalabce < 0) { // 判断是否馀额足够

withDrawStatus = false;

System.out.println("....................");

System.out.println(" 帐户馀额不足!");

System.out.println("....................");

} else {

withDrawStatus = true;

account.setBalance(tmpBalabce); // 回存account最後剩馀金额

}

}

System.out.println(tName + "的交易单:");

System.out.println("\t欲提款金额:" + withdrawMoney + "元");

System.out.println("\t帐户馀额:" + account.getBalance());

if(withDrawStatus == true){

System.out.println(tName + " 完成提款 ... ");

} else {

System.out.println(tName + " 提款失败 ... ");

}

System.out.println("-------------------------------");

}

}

// 提款类别

class WithDraw extends Thread {

private Account account; // 帐号

private int withdrawMoney; // 欲提款的金额

// tName:执行绪名称, account:Account物件名称, withdrawMoney:欲提款金额

public WithDraw(String tName, Account account, int withdrawMoney) {

setName(tName);

this.account = account;

this.withdrawMoney= withdrawMoney;

}

public void run() {

// 执行提款动作(account:帐号, withdrawMoney 欲提款金额)

account.withDraw(account, withdrawMoney); // 执行提款动作

}

}

取消

评论

java银行账户类_用java编写银行账户的存款方法相关推荐

  1. java的异常类_各种Java异常类大集合,精辟精辟精辟

    java.lang.ArithmeticException:算术条件异常.譬如:整数除零等. java.lang.ArrayIndexOutOfBoundsException:数组索引越界异常.当对数 ...

  2. 用java建一个类_利用JAVA创建一个类。

    慕姐829404 123456789101112131415package com.test;public class TestTrapezia   {    public static void m ...

  3. java界面做主类_组成java Application的若干类中,有且仅有一个主类,只有主类中含有主方法main();...

    [单选题]86.调整镜头的光学中心到成像装置的距离,使成像清晰,这个过程叫() [单选题]349.在很多传统影视作品中,总会在一位英雄人物光荣牺牲后,去拍摄挺拔的青松或伟岸的青山,这体现了蒙太奇的() ...

  4. java 测试用例核心代码_核心Java测验

    java 测试用例核心代码 Welcome to Core Java Quiz. Java is an object-oriented programming language. 欢迎来到Core J ...

  5. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  6. 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户 类中增加密码、地址、最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数。 要求: (1)类

    先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户 类中增加密码.地址.最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数. 要求: (1)类中的成员函数具有输入.输出 ...

  7. 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息月利息=存款金额x年利率+12(2)更改利率(静态方法)

    实验二:继承和派生程序设计(4学时)必做题: 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息 月利息=存 ...

  8. FANUC机器人_程序轨迹编写和修改的具体方法步骤(图文)

    FANUC机器人_程序轨迹编写和修改的具体方法步骤 一. 修改标准动作指令 基本步骤可参考如下: 首先,点击"教点资料",如下图所示,

  9. java银行账户模拟_使用Java模拟银行账户存、取款、转账功能

    半枯 我分开写给你package bank; //这是创建新用户的 import java.io.FileNotFoundException; import java.io.IOException; ...

最新文章

  1. 现在的社会,能负债的人,一定是有本事的人
  2. 洛谷 1379 八数码难题
  3. boost::python::upcast的测试程序
  4. Hibernate 对象的三种状态
  5. u8转完看不到菜单_web网页有错误,无法看到操作菜单-用友U8
  6. 计算机英语词组,计算机专业英语词组.doc
  7. 均匀三次b样条曲线_西门子数控曲线加工进给速度优化指令
  8. 嵌入式软件与设计 学习笔记总结一
  9. 5G技术对我们生活的影响
  10. dell服务器分区表修复,如何修复被Partition Magic损坏的分区表
  11. HTML5堆木头游戏
  12. 20220728使用电脑上的蓝牙和汇承科技的蓝牙模块HC-05配对蓝牙串口传输
  13. Oracle11g 调整表空间大小 Resize
  14. Java中文生僻字排序
  15. php mysql 排班表_PHP倒班五班三倒
  16. 动目标显示matlab仿真,动目标显示与脉冲多普勒雷达 (MATLAB程式设计)
  17. 安卓开发 -- 定时重启设备
  18. Java实现树状结构解析
  19. python从网址爬图片协程_python协程gevent案例:爬取斗鱼美女图片
  20. python单选按钮控件_Tkinter 单选按钮

热门文章

  1. 连载 | Android之Camera1实现相机开发
  2. 画流程图用什么软件好?
  3. 【c#】MD5加密实现
  4. 大数据分析技术有哪些
  5. Win10环境下基于Hexo的静态博客环境搭建,及其阿里云部署
  6. Ubuntu 安装 SSH 服务
  7. mac 下安装python+selenium+firebox+pycharm+geckodriver
  8. react中使用lazy函数进行路由懒加载
  9. 机器学习实战(一):Document clustering 文档聚类
  10. 1434:相亲的胖胖