Java黑皮书课后题第8章:**8.17(金融风暴)银行会互相借款……银行的总资产是它当时的余款减去它欠其他银行的贷款。如果一个银行的总资产在某个限以下,那么这个银行是不安全的。编写程序,找出所有不安
**8.17(金融風暴)銀行會互相借款……銀行的總資產是它當時的余款減去它欠其他銀行的貸款。如果一個銀行的總資產在某個限以下,那么這個銀行是不安全的。編寫程序,找出所有不安全銀行
- 題目
- 題目描述
- 破題
- 代碼
- 運行實例
題目
題目描述
**8.17(金融風暴)銀行會互相借款……銀行的總資產是它當時的余款減去它欠其他銀行的貸款。
圖是五個銀行的狀況圖,當前銀行的余額分別是2 500萬美元、17 500萬美元、7 500萬美元、18 100萬美元,從結點1到結點2方向表示銀行1借給銀行2共計4 000萬美元
原圖請參見:(本文章撰寫時已經很晚,不方便拍照)
https://blog.csdn.net/jxh1025_/article/details/110849395
如果一個銀行的總資產在某個限度以下,那么這個銀行是不安全的。如果貸款不能返還,則借款方不能將這個貸款計入總資產,導致借貸方總資產也可能在限定以下,那么它也是不安全的
編寫程序,找出所有不安全銀行
程序讀入如下輸入:n銀行個數 limit銀行安全最小總資產
n行輸入(n個銀行,銀行id從0到n-1):
每行第一個:該行余額
每行第二個:資金借入該行的銀行id
每行第三個:從這個銀行借款的銀行id
每行第四個:上面這家銀行借了多少錢
每行第五個:從這個銀行借款的銀行id
每行第六個:上面這家銀行借了多少錢
5 201
25 2 1 100.5 4 320.5
125 2 2 40 3 85
175 2 0 125 3 75
75 1 0 125
181 1 2 175
銀行3的總資產是75+125 < 201,所以銀行3是不安全的
如果銀行3不安全,則銀行1資產從125+40+85降為125+40,所以銀行1也不安全
程序輸出應該是:
Unsafe banks are 3 1
提示:使用一個二維數組borrowers來表示貸款,borrowers[i][j]表明銀行i貸款給銀行j貸款額。一旦銀行j不安全則將borrowers[i][j]置空
破題
代碼
import java.util.Scanner;public class Test8_17 {public static void main(String[] args) {//1. 主方法:接收用戶從控制臺的輸入,并賦值給新建的兩個int對象(分別用于保存銀行個數和最低安全資產數)Scanner input = new Scanner(System.in);System.out.print("請輸入銀行數量和銀行安全的最低資產數:");int n = input.nextInt();double limit = input.nextDouble();//2. 主方法:聲明一個二維數組borrowers,表示貸款,長度為 銀行個數n * 銀行個數nSystem.out.println("請輸入數據:");double[][] borrowers = new double[n][n];int[] bank = new int[n];double[] balance = new double[n];//3. 主方法:創建一個臨時double變量temp用于保存數值int temp = 0;//4. 主方法:賦值for (int i = 0 ; i < n ; i++){balance[i] = input.nextDouble();bank[i] = input.nextInt();for (int j = 0 ; j < bank[i] ; j++){borrowers[i][input.nextInt()] = input.nextDouble();}}//4. 主方法:輸出 不含不安全銀行id、is或are的部分System.out.print("Unsafe banks ");int count = 0;String str = "";//5. 主方法:找總資產(列1、3、5元素和)少于201的銀行id + 6. 繼續遍歷數組找iddouble[] sum = new double[n];for (int num = 0 ; num < n ; num++) {for (int i = 0; i < n; i++) {sum[i] = balance[i];for (int j = 0; j < n; j++) {sum[i] += borrowers[i][j];}}for (int i = 0; i < n; i++) {if (sum[i] < 201 && balance[i] != 0) {count++;str += i + " ";for (int j = 0; j < n; j++) {borrowers[j][i] = 0;balance[i] = 0;}}}}if (count == 1){System.out.print("is " + str);} else {System.out.print("are " + str);}} }運行實例
請輸入銀行數量和銀行安全的最低資產數:5 201 請輸入數據: 25 2 1 100.5 4 320.5 125 2 2 40 3 85 175 2 0 125 3 75 75 1 0 125 181 1 2 125 Unsafe banks are 3 1總結
以上是生活随笔為你收集整理的Java黑皮书课后题第8章:**8.17(金融风暴)银行会互相借款……银行的总资产是它当时的余款减去它欠其他银行的贷款。如果一个银行的总资产在某个限以下,那么这个银行是不安全的。编写程序,找出所有不安的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java黑皮书课后题第8章:*8.16(
- 下一篇: Java黑皮书课后题第8章:8.18(打