复利计算器(软件工程)及Junit测试———郭志豪

Posted 36郭志豪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复利计算器(软件工程)及Junit测试———郭志豪相关的知识,希望对你有一定的参考价值。

计算:1.本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,000,000×(1+3%)^30

客户提出:

2.如果按照单利计算,本息又是多少呢?

3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢?

4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢?

 5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢?

6.如果每年都将积蓄的3万元进行投资,每年都能获得3%的回报,然后将这些本利之和连同年金再投入新一轮的投资,那么,30年后资产总值将变为多少?如果换成每月定投3000呢?

7. 你写的程序能让客户随意操作吗?误输入数据、不小心做了非常规的操作程序是什么反应? 

    相互观赏程序运行情况。

8. 如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)


package FuLi;


import java.util.*;
import java.math.*;
import java.text.*;


import org.omg.CORBA.PUBLIC_MEMBER;


public class gzh {

public int NianXian(double P,double F,double i){

int N=(int) ((Math.log(F) / Math.log(1 + i)) - (Math.log(P) / Math
.log(1 + i)));
return N;

}


public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("欢迎使用复利计算器!--BY 郭志豪");
/*
* 复利计算公式: F=P*(1+i)N(次方)    F:复利终值    P:本金    i:利率    N:利率获取时间的整数倍
*/
gzh bb = new gzh();
Scanner input = new Scanner(System.in);
System.out.println("复利计算器:");
System.out.println("本金按1 复利(单利)按2 年限按3 利率按4 年金终值按5 定期付息按6");
int num = input.nextInt();
DecimalFormat df1 = new DecimalFormat("#.00");
// 求本金

if (num == 1) {
System.out.println("请输入复利终值:");
double F = input.nextDouble();
System.out.println("请输入年利率:");
double i = input.nextDouble();
System.out.println("请输入存入年限:");
int N = input.nextInt();
double P = F / Math.pow(1 + i, N); // 本金
System.out.println("所需本金为:" + df1.format(P));
}
// 求复利(单利)
else if (num == 2) {
System.out.println("请输入存入本金:");
double P = input.nextDouble();
System.out.println("请输入年利率:");
double i = input.nextDouble();
System.out.println("请输入存入年限:");
int N = input.nextInt();
double D = P * (1 + i * N); // 单利
System.out.println("单利终值:" + df1.format(D));
System.out.println("请输入年复利次数:");
int m = input.nextInt();
double F = P * (Math.pow((1 + i / m), N * m)); // 复利
System.out.println("复利终值为:" + df1.format(F));
}
// 求所需年限
else if (num == 3) {
System.out.println("请输入存入本金:");
double P = input.nextDouble();
System.out.println("请输入复利终值:");
double F = input.nextDouble();
System.out.println("请输入年利率:");
double i = input.nextDouble();
int N1 = (int)bb.NianXian(F, i, P);
//int N = (int) ((Math.log(F) / Math.log(1 + i)) - (Math.log(P) / Math
// .log(1 + i)));
System.out.println("所需年限为:" +N1);
} else if (num == 4) {
System.out.println("请输入存入本金:");
double P = input.nextDouble();
System.out.println("请输入复利终值:");
double F = input.nextDouble();
System.out.println("请输入存入年限:");
int N = input.nextInt();
double i = (Math.pow(F / P, 1.0 / N)) - 1;
System.out.println("年利率为:" + i);
System.out.println("本金n年后是否会翻n番?是请按1");
int up = input.nextInt();
if (up == 1) {
System.out.println("请输入几年后:");
int n = input.nextInt();
System.out.println("翻几番:");
int f = input.nextInt();
double I = 72.0 / (n / f); // 72法则
System.out.println(n + "年后本金翻倍的年利率至少为:" + df1.format(I));
}
if (up != 1) {
System.out.println("欢迎再来!");


}
} else if (num == 5) {
System.out.println("按年投资按1 按月投资按2 ");
int number = input.nextInt();
if (number == 1) {
System.out.println("要投资的本金:");
double P = input.nextDouble();
System.out.println("获得的年利率回报:");
double i = input.nextDouble();
System.out.println("投资年限(年):");
double N = input.nextInt();


double F = P * (Math.pow(1 + i, N) - 1) / i;
System.out.println("按年投资的年金终值为:" + df1.format(F));
}
if (number == 2) {
System.out.println("要投资的本金:");
double P = input.nextDouble();
System.out.println("获得的年利率回报:");
double i = input.nextDouble();
System.out.println("投资年限(年):");
double N = input.nextInt();
double F = P * (Math.pow(1 + i / 12.0, N * 12) - 1) / (i / 12);
System.out.println("按月投资的年金终值为:" + df1.format(F));
}
if (number != 1 || number != 2) {
System.out.println("输入错误!");
}
} else if (num == 6) {
System.out.println("要贷款的本金:");
double P = input.nextDouble();
System.out.println("贷款年利率:(年)");
double i = input.nextDouble();
System.out.println("贷款期(年):");
double N = input.nextDouble();
double H = P
* (((i / 12) * (Math.pow(1 + i / 12, N * 12))) / (Math.pow(
1 + i / 12, N * 12) - 1));
System.out.println("需每月还款:" + df1.format(H));
} else {
System.out.println("输入错误!");
}
}




}

 

 

技术分享技术分享技术分享技术分享

技术分享技术分享技术分享

Junit测试

代码还没优化完整,接下来会继续完成,其他测试也跟这个一样,先列举一个!

总结:从一开始到现在,不断出现问题,不断地解决问题,作品慢慢成型,越来越有干劲,这就是编程的魅力!

技术分享

以上是关于复利计算器(软件工程)及Junit测试———郭志豪的主要内容,如果未能解决你的问题,请参考以下文章

复利计算器4.0之再遇JUnit

复利计算—单元测试

复利计算器单元测试

软件工程实验一 复利计算——单元测试

sprint 1 的总结

软件测试学习日志———— round 2 Junit+intellj idea 安装及简单的测试使用