日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

javase实现银行转账

發布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javase实现银行转账 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

10個賬戶,每個1000元,互相轉賬【隨機轉】,轉了1000次之后就輸出一下用戶的余額和總的賬戶余額【要為10000】

1、主類

/*** 主類* * @function 10個賬戶,每個1000元,互相轉賬【隨機轉】,轉了1000次之后就輸出一下用戶的余額和總的賬戶余額【要為10000】* @author HDL* */ public class BankMain {/*** 主方法* * @param args*/public static void main(String[] args) {Bank bank = new Bank();// 銀行類BankThread[] bt = new BankThread[10];// 10個銀行線程for (int i = 0; i < bt.length; i++) {// 開啟10個線程bt[i] = new BankThread(bank, i);new Thread(bt[i]).start();}} }

2、銀行類

public class Bank {double[] account = new double[10];// 10個銀行賬戶public Bank() {// 初始化銀行賬戶類for (int i = 0; i < account.length; i++) {account[i] = 1000;}}/*** 轉賬方法* * @param from* 誰轉* @param to* 轉給誰* @param money* 轉多少*/public synchronized void transfer(int from, int to, double money) {// 轉出前需要判斷戰賬戶余額是否有money那么多,沒有就繼續等待【這里需要使用while而不是if】while (account[from] <= money) {// 沒有錢了就不能轉了,等待看是否有人轉過來try {wait();// 等待} catch (InterruptedException e) {e.printStackTrace();}}// System.out.println("賬戶 " + from + " 向 " + to + " 轉了 " + money);account[from] -= money;// 出賬account[to] += money;// 入賬notify();// 喚醒一個等待的線程}/*** 顯示用戶余額和總額*/public synchronized void show() {int sum = 0;for (int i = 0; i < account.length; i++) {System.out.println("--------------------賬戶 " + (i + 1) + " 的余額為:"+ account[i]);sum += account[i];}System.out.println("--------------------銀行總額為:" + sum);} }

3、線程類

public class BankThread implements Runnable {Bank bank;// 銀行實體private int count = 0;// 記錄轉賬次數private int from = 0;// 固定由誰來轉賬/*** 構造方法 初始化對象* * @param bank* 銀行* @param from* 誰來轉*/public BankThread(Bank bank, int from) {this.bank = bank;this.from = from;}@Overridepublic void run() {while (true) {// 一直執行int to = (int) (Math.random() * 10);// 隨機產生0-9的賬戶while (from == to) {// 這個賬戶不能為當前from,相同了就繼續生成to = (int) (Math.random() * 10);// 重新生成}double money = (int) (Math.random() * 500 + 100);// 隨機的轉100-599的賬bank.transfer(from, to, money);// 開始轉賬了count++;// 自增一// System.out.println("轉了 " + count + " 次");if (count == 1000) {// 判斷是否有1000次轉賬了count = 0;// 重新統計bank.show();// 顯示余額}}} }

4、運行結果


總結

以上是生活随笔為你收集整理的javase实现银行转账的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。