码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-03-28 23:14:40      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:

计算: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测试———郭志豪

标签:

原文地址:http://www.cnblogs.com/gzh13692021053/p/gzh13692021053.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!