**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]置空

破题

  1. 主方法:接收用户从控制台的输入,并赋值给新建的两个int对象(分别用于保存银行个数和最低安全资产数)
  2. 主方法:声明一个二维数组borrowers,表示贷款,长度为 银行个数n * 银行个数n
  3. 主方法:创建一个临时double变量temp用于保存数值
  4. 主方法:赋值
  5. 主方法:输出不含不安全银行id的部分
  6. 主方法:循环继续找并输出id

代码

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(金融风暴)银行会互相借款……银行的总资产是它当时的余款减去它欠其他银行的贷款。如果一个银行的总资产在某个限以下,那么这个银行是不安全的。编写程序,找出所有不安相关推荐

  1. Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差

    7.11(统计:计算标准差)编程练习题5.45计算数字的标准差.本题-计算标准差,使用一个数组存储x的每个数.编写测试程序,提示用户输入10个数字,显示平均值和标准差 题目 题目描述与运行示例 破题 ...

  2. Java黑皮书课后题第3章:*3.25(几何:交点)第一条直线上面的两个点是(x1,y1)(x2,y2),第二条(x3,y3)(x4,y4),通过Cramer规则求出线性方程组

    *3.25(几何:交点)第一条直线上面的两个点是(x1,y1)(x2,y2),第二条(x3,y3)(x4,y4),通过Cramer规则求出线性方程组 题目 题目概述 题目给出的线性方程组 Cramer ...

  3. Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类

    Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类) 题目 缺陷 UML图 代码 Test02_MyDate.java:用于参考的My ...

  4. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

  5. Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字

    Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字 题目 代码 结果 题目 都在上面 代码 import java.math.B ...

  6. Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类

    Java黑皮书课后题第10章:10.3 题目 程序 代码 Test13.java Test13_MyRectangle2D.java 运行 UML 题目 程序 Test13.java:测试程序 Tes ...

  7. Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中

    Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中 题目 程序说明 题目槽点 代码:Test2_BMI.java 运行实例 题目 程序说明 Test2_BMI.java ...

  8. Java黑皮书课后题第10章:*10.1(Time类)设计一个名为Time的类。编写一个测试程序,创建两个Time对象(使用new Time()和new Time(555550000))

    Java黑皮书课后题第10章:*10.1设计一个名为Time的类.编写一个测试程序,创建两个Time对象 题目 程序 代码 Test1.java Test1_Time.java 运行结果 UML 题目 ...

  9. Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置。

    Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置 题目 破题 代码 Test13 Test13_Location 运行结果 ...

  10. Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交。第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4)

    Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交.第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4) 题目 破题 ...

最新文章

  1. Vue单文件组件环境配置
  2. 谈谈“个人电子信息”的保护
  3. 麦块我的世界怎么用java_麦块我的世界怎么玩啊?
  4. vue 2个方法先后执行_4个简单靠谱的所得税节税方法,老板看完都批示财务执行...
  5. P3768 简单的数学题(杜教筛)
  6. stm32f4 hs 电路_电动机控制电路识图一看就懂
  7. 【小技巧积累】用Style实现必填提示“*”根据选项的不同而显示或隐藏
  8. 网页鼠标指针源码 小樱茉莉Q版鼠标指针
  9. 小马客服系统多种商户接入客服等!目前最好的客服系统 跟洽美差不多
  10. 【转】【CN五一装机版】GhostXP_SP3电脑公司通用版v19.2装机版NTFS
  11. 镁光ddr3布线规则_讨论一下DDR3 缓存的电压和频率
  12. android获取汉字拼音首字母,ios/android获取汉字拼音首字母
  13. 微信小程序开发之——音乐播放器-播放器(3.4)
  14. JAVA+JDBC超级详解---从连接数据库到连接池
  15. 渲染类博客和游戏相关工作室论文发布地址大集合
  16. 简单两步搞定小米路由新增功能-DDNS
  17. 随笔——Docker学习笔记
  18. html调用手机NFC,如何使用手机上NFC的功能
  19. replaceAll() 方法
  20. 基于Android Studio的蓝牙通信的简单应用与开发

热门文章

  1. element ui登录界面_Vue和Element-UI做一个简单的登录页面
  2. linux解决windows应用程序,关于Linux下使用Windows应用程序的尝试总结
  3. Ansible中的变量及加密
  4. 上海市新能源汽车数据平台引入阿里云Lindorm数据库,成本下降20%
  5. 搜索 | 电商行业模版驱动业务增长实践
  6. The world at your fingertips — 天涯明月刀幕后23(海战)
  7. show slave status\G中的Read_Master_Log_Pos和Relay_Log_Pos的(大小)关系
  8. inbound connection timed out (ORA-3136)错误诊断
  9. DirectX11 With Windows SDK--27 计算着色器:双调排序
  10. [十一]SpringBoot 之 添加JSP支持