定义一个贷款类Loan,其中有属性:
annualInterestRate:double,表示贷款的年利率(默认值:2.5)
numberOfYears:int,表示贷款的年数(默认值:1)
loanAmount:double,表示贷款额(默认值:100)
loanDate:java.util.Date,表示创建贷款的日期
定义方法:
(1)默认的无参构造方法
(2)带指定利率、年数和贷款额的构造方法
(3)所有属性的get/set方法
(4)返回这笔贷款的月支付额getMonthlyPayment()
月支付额 = (贷款额度月利率)/(1-(1/Math.pow(1+月利率,年数12)))
(5)返回这笔贷款的总支付额getTotalPayment()
总支付额度 = 月支付额度年数12

附上如下的测试类。

public class Main{public static void main(String[] args) {Scanner input = new Scanner(System.in);while (input.hasNext()) {double AIR = input.nextDouble();int NOY = input.nextInt();double LA = input.nextDouble();try {Loan m = new Loan(AIR, NOY, LA);System.out.printf("%.3f\n",m.getTotalPayment());} catch (Exception ex) {System.out.println(ex);}}}
}

输入格式:
输入有多组数据,一个实数表示年利率,一个整数表示年数,一个实数表示贷款总额。

输出格式:
若任意一项小于或等于零,抛出IllegalArgumentException异常及相应描述(Number of years must be positive或Annual interest rate must be positive或Loan amount must be positive);有多项不符合,以不符合最前项为准;

若均符合要求,按照格式输出总额。

输入样例:
在这里给出一组输入。例如:

1 1 1000
2.0 0 2000
0 0 0

输出样例:
在这里给出相应的输出。例如:

1005.425
java.lang.IllegalArgumentException: Number of years must be positive
java.lang.IllegalArgumentException: Annual interest rate must be positive

import java.util.Date;
import java.util.Scanner;
public class Main{public static void main(String[] args) {Scanner input = new Scanner(System.in);while (input.hasNext()) {double AIR = input.nextDouble();int NOY = input.nextInt();double LA = input.nextDouble();try {Loan m = new Loan(AIR, NOY, LA);if (AIR<=0)throw new IllegalArgumentException("Annual interest rate must be positive");else if (NOY<=0)throw new IllegalArgumentException("Number of years must be positive");else if (LA<=0)throw new IllegalArgumentException("Loan amount must be positive");System.out.printf("%.3f\n",m.getTotalPayment());} catch (Exception ex) {System.out.println(ex);}}}
}class Loan{private double annualInterestRate;private int numberOfYear;private double loanAmount;private Date loanDate;public Loan() {annualInterestRate=2.5;numberOfYear=1;loanAmount=100;this.loanDate=new Date();//没啥用}public Loan(double annualInterestRate, int numberOfYear, double loanAmount) {this.annualInterestRate = annualInterestRate;this.numberOfYear = numberOfYear;this.loanAmount = loanAmount;}public double getAnnualInterestRate() {return annualInterestRate;}public void setAnnualInterestRate(double annualInterestRate) {this.annualInterestRate = annualInterestRate;}public int getNumberOfYear() {return numberOfYear;}public void setNumberOfYear(int numberOfYear) {this.numberOfYear = numberOfYear;}public double getLoanAmount() {return loanAmount;}public void setLoanAmount(double loanAmount) {this.loanAmount = loanAmount;}public Date getLoanDate() {return loanDate;}public void setLoanDate(Date loanDate) {this.loanDate = loanDate;}public double getMonthlyPayment(){double monthRate=annualInterestRate/1200;//注意年利率=月利率/1200;return loanAmount*monthRate/(1-(1/Math.pow(1+monthRate,numberOfYear*12)));}public double getTotalPayment(){return getMonthlyPayment()*12*numberOfYear;}
}

7-9 设计一个能处理异常的Loan类 (20 分)相关推荐

  1. 用Java写PTA 7-11 设计一个能处理异常的Loan类

    用Java写PTA 7-11 设计一个能处理异常的Loan类 定义一个贷款类Loan,其中有属性: annualInterestRate:double,表示贷款的年利率(默认值:2.5) number ...

  2. Python面向对象基础练习——设计一个名为 MyRectangle 的矩形类来表示矩形

    # 设计一个名为 MyRectangle 的矩形类来表示矩形.这个类包含 # (1) 左上角顶点的坐标:x,y # (2) 宽度和高度:width.height # (3) 构造方法:传入 x,y,w ...

  3. 设计一个名为 MyRectangle 的矩形类来表示矩形

    设计一个名为 MyRectangle 的矩形类来表示矩形.这个类包含 (1) 左上角顶点的坐标:x,y (2) 宽度和高度:width.height (3) 构造方法:传入 x,y,width,hei ...

  4. 设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域。

    设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域,它们分别表示矩形的宽和高.width和height的默认值都为1.该类包括矩形类的无参构造函数 ...

  5. Python基础学习笔记——设计一个名为MyRectangle的矩形类来表示矩形

    学习目标: '设计一个名为MyRectangle的矩形类来表示矩形,这个类包含: (1)左上角坐标:x,y (2)宽度和高度 (3)构造方法:传入x,y,width,height.如果(x,y)不传默 ...

  6. 7-20 设计一个People类 (20 分)

    设计一个People 类,该类的数据成员有姓名.年龄.身高.体重和人数,其中人数为静态数据成员,成员函数有构造函数.显示和显示人数.其中构造函数由参数姓名.年龄.身高和体重来构造对象:显示函数用于显示 ...

  7. <一> 从头设计一个三维模型存储格式.dat3d——文件保存类设计

    功能设计:设计一种自定义三维格式,可以接受常见的三维模型数据,主要包括几何数据.属性数据及纹理材质数据.其中几何数据以.dat后缀的二进制数据来进行存储:属性数据以.csv的表格形式来存储:纹理材质图 ...

  8. QT [005] 数据库设计 - 一个被忽略的数据库show类 - ConnectionWidget Class

    我们讲到数据库,大部分的教材里面都是什么QTreeView QTableView来展示数据库的源和数据表格,但是,QT给出的最新SQL的例子里面,有一些类真的是给数据库准备的,但是,我们都不知道,比如 ...

  9. 设计一个用于人事管理的People(人员)类

    http://blog.sina.com.cn/s/blog_718f7278010187y1.html

最新文章

  1. 【实用】一个移动端简单的UI弹窗组件,虽算不上高大上,但至少耐看
  2. 【PAT】A1106 Lowest Price in Supply Chain
  3. Dephi7程序设计与开发技术大全(求是科技)
  4. Socket 死连接详解
  5. php+条件限定符,const 限定符
  6. 窗体的布局 1124
  7. python3.5安装scrapy_win7+Python3.5下scrapy的安装方法
  8. mysql变量包括什么意思_什么是mysql变量?
  9. VMware esxi 4.0如何更换序列号
  10. vba 抓取php网页,用VBA操作网页并抓取数据
  11. 用JAVA语言定义一个标准的学生类
  12. php圆形设计图,教程|PHP如何制作圆形用户头像?
  13. matlab 矩阵增加行,MATLAB 中 如何在矩阵中插入1行
  14. PyTorch 和 Albumentations 实现图像分类(猫狗大战)
  15. 单细胞分析Scanpy(一):Anndata数据结构
  16. 看这篇就够了——ubuntu扩展屏幕及装显卡驱动后黑屏问题
  17. GPU服务器的上手使用-小试牛刀
  18. word2003文档转pdf预览加盖水印与套红
  19. signature=daa3bbe3ad9a7c162ba9d98f8d9e7530,解决select2插件下拉搜索框,输入拼音能够匹配中文汉字的问题...
  20. Spring Boot 注入接口 @Autowired interface

热门文章

  1. k8s 里的kv和kvs
  2. order by 子查询_视图,子查询,标量子查询,关联子查询
  3. 问题 F: 小鱼的格子裁剪(dfs)
  4. 12.04 深圳站 | Serverless Developer Meetup 开放报名
  5. @成都的Coder ,一起探讨终端架构持续演进
  6. Knative 快捷操作命令 Kn 介绍
  7. 蚂蚁御术:我的前端十年成长之路
  8. 正确入门Service Mesh:起源、发展和现状
  9. 计算机第二章题库,全国计算机二级题库第二章
  10. 童年真的回来了么?《摩尔庄园》手游深度分析