模拟一个储蓄卡账户,起初额度是100元,模拟取现、存款等多次操作。 1.可以先取出1元,再存入1元,有1000次以上的流水即可。 2.输出结果可为示例:”向账户取了1元,账户还有X元“,或者”向账户存了1元,账户还有X元“。其中X为当前储蓄卡内的余额。 3.为了方便查看结果,流水次数最好以10的倍数。
3条回答 默认 最新
- wild84 2017-03-05 04:54关注
我刚好写了一个,看看是不是你要的
public class AccountTest { public static void main(String[] args) { Account account=new Account(); Bank bank=new Bank(); bank.setAccount(account); Thread t1=new Thread(new PeopleIn(bank)); Thread t2=new Thread(new PeopleOut(bank)); t1.setName("张三"); t2.setName("张三的老婆"); t1.start(); t2.start(); } } class Account{ private int balance=100; public int getBalance(){ return this.balance; } public void amountOut(int amt){ balance=balance-amt; System.out.println(Thread.currentThread().getName()+"取款"+amt); } public void amountIn(int amt){ balance=balance+amt; System.out.println(Thread.currentThread().getName()+"存款"+amt); } } class Bank{ private Account account; private boolean flag=false; public void setAccount(Account account){ this.account=account; } public Account getAccount(){ return account; } public synchronized void moneyOut(int amt) { if(flag==false){ try { //System.out.println("老公还未存钱,余额不足。"); this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } if(this.account.getBalance()>0){ account.amountOut(amt); System.out.println("账户余额"+this.account.getBalance()); }else { System.out.println("余额不足,无法完成取款。"); } this.flag=false; this.notify(); } public synchronized void moneyIn(int amt) { if(flag){ try { //System.out.println("老婆还未取钱,无法存钱。"); this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } if(this.account.getBalance()<100){ account.amountIn(amt); System.out.println("账户余额"+this.account.getBalance()); }else { System.out.println("账户金额已满,无法完成存款。"); } this.flag=true; this.notify(); } } class PeopleIn implements Runnable{ private Bank bank; public PeopleIn(Bank bank){ this.bank=bank; } @Override public void run() { for(int i=0;i<20;i++){ bank.moneyIn(100); } } } class PeopleOut implements Runnable{ private Bank bank; public PeopleOut(Bank bank){ this.bank=bank; } @Override public void run() { for(int i=0;i<20;i++){ bank.moneyOut(100); } } }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 链接问题 C++LNK2001 无法解析的外部符号
- ¥50 安装pyaudiokits失败
- ¥15 计组这些题应该咋做呀
- ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
- ¥15 让node服务器有自动加载文件的功能
- ¥15 jmeter脚本回放有的是对的有的是错的
- ¥15 r语言蛋白组学相关问题
- ¥15 Python时间序列如何拟合疏系数模型
- ¥15 求学软件的前人们指明方向🥺
- ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接