java语言程序设计第八版 基础篇 上的一道题

Tian3seawolf 2015-02-08 08:07:01
题目 :2.15(财务应用程序:复利值)假设你每月向银行账户存100美元,年利率为5%,那么每月利率是0.05/12=0.00417。第一月之后,账户上的钱就变成:
100*(1+0.00417)=100.417
第二个月之后,账户上的值就变成:
(100+100.417)*(1+0.00417)=201.252
第三个月之后,账户上的值就变成:
(100+201.252)*(1+0.00417)=302.507;
以此类推。
编写程序显示6个月后账户上的钱。


这是我写的程序,前两个月的都对了到了3月——6月的就不对了,求高人指点!!!!!!!!!!!


import java.util.Scanner;
import java.text.DecimalFormat;

public class Test
{
public static void main(String[] args)
{
// Create an new Scanner
Scanner input=new Scanner(System.in);

//提示每月向账户存入的钱数
System.out.print("请输入每月存款数:");
double amount=input.nextDouble();

//提示输入年利率
System.out.print("请输月利率(0.00417):");
double monthlyInterestRate=input.nextDouble();

//提示输入要查看的月数
System.out.print("请输入月份:");
int monthOfNumbers=input.nextInt();

//计算某个月后账户上的钱数
double allMoney=amount+(100*(1+monthlyInterestRate))*(monthOfNumbers-1)*(1+monthlyInterestRate);


String sal = new DecimalFormat("#.000").format(allMoney);

//输出结果
System.out.printf(monthOfNumbers+"个月后你的账户上的存款是:" +" "+sal);
}

}

计算出来的结果和题目上的不一样 是在无言了!!!求高人在这个程序上改进指点小弟,不慎感激!!!!!!!!!!
...全文
1021 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
peixiaoming521 2015-02-25
  • 打赏
  • 举报
回复
import java.util.ArrayList;
import java.util.List;

public class Test2 {
//递归调用
//第一个参数为 起始存入 第二个参数为 月份
public static double dox(double money,int mouth){
if(mouth==1){
return money*(1+0.00417);
}
return (money+dox(money,mouth-1))*(1+0.00417);
}

//测试
public static void main(String[] args) {
System.out.println(dox(100,2));
}
}
nmyangym 2015-02-10
  • 打赏
  • 举报
回复

/*
 * 计算任意月的连本带利的值
 * 比如月利率是r,本金是a,月数为m,连本带利的和为x
 * 则第一个月后 x = a(1+r);
 *  第二个月后x = (a(1+r)+a)(1+r)= a[(1+r)^2 + (1+r)];
 *  第三个月后x = [a[(1+r)^2 + (1+r)]](1+r) = a[(1+r)^3 + (1+r)^2 + (1+r)];
 *  第m个月后x = a[(1+r)^m + (1+r)^(m-1) + (1+r)^(m-2) + .... + ()]
 *          = a[(1+r)((1+r)^m-1)]/r
 * 最后这一步利用等比数列求值公式。
 * 把 amount--> a,  monthlyInterestRate-->r,  monthOfNumbers--> m替换后就是代码的公式。
*/
double  allMoney = amount * (1 + monthlyInterestRate) * (Math.pow(1 + monthlyInterestRate, monthOfNumbers) - 1) / monthlyInterestRate;
Tian3seawolf 2015-02-10
  • 打赏
  • 举报
回复
谢谢各位高人的指点 !!!!!!!
lucifersyt 2015-02-09
  • 打赏
  • 举报
回复
double allMoney=0; for(int i=0;i<monthOfNumbers;i++) allMoney=(allMoney+amount)*(1+monthlyInterestRate); 表示monthOfNumbers个月之后的钱
wAIxiSeu 2015-02-09
  • 打赏
  • 举报
回复

import java.util.Scanner;
public class CalculationCompoundInterest {
	public static void main(String[] args) {
		double YEAR_RATE = 0.05;
		double monthRate = YEAR_RATE/12;
		System.out.println("Please input your money:");
		Scanner input = new Scanner(System.in);
		double money = input.nextDouble();
		System.out.println("How many months do you want to store?");
		int month = input.nextInt();
		double totalMoney = 0.0;
		for(int i = 1;i<=month;i++){
			totalMoney = (money+totalMoney)*(1+monthRate);
		}
		System.out.printf("After%2d months,your total money will be:$%7.3f", month,totalMoney);
		input.close();
	}
}
言不由衷煦 2015-02-09
  • 打赏
  • 举报
回复
public class Textt { public static void main(String[] args) { demo(3,0.05,100); } private static void demo(int time, double lilv,double money) { if(time > 0 && lilv > 0 && money > 0){//判断一下信息是不正常的 double a=money;//记录你要每个月要存储的钱数 for (int k = 0; k < time; k++) { if(k==0){ money=(money)*(1+lilv/12); }else{//从第二个月的话,每月都要往里面加钱 money=(a+money)*(1+lilv/12); } } System.out.println(money); }else{ System.out.println("输入有误!!!"); } } } 这是我写的一个小测试,没有添加Scanner功能,你看一下或许有点帮助
捏造的信仰 2015-02-09
  • 打赏
  • 举报
回复
楼主要学会贴代码
public class Demo {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("no args.");
        }
    }
}
wula0010 2015-02-09
  • 打赏
  • 举报
回复
精确计算,不要用double,用bigdecimal类
Tian3seawolf 2015-02-08
  • 打赏
  • 举报
回复
import java.util.Scanner; import java.text.DecimalFormat; public class Test { public static void main(String[] args) { // Create an new Scanner Scanner input=new Scanner(System.in); //提示每月向账户存入的钱数 System.out.print("请输入每月存款数:"); double amount=input.nextDouble(); //提示输入年利率 System.out.print("请输月利率(0.00417):"); double monthlyInterestRate=input.nextDouble(); //提示输入要查看的月数 System.out.print("请输入月份:"); int monthOfNumbers=input.nextInt(); //计算某个月后账户上的钱数 double allMoney=(amount+(amount*(1+monthlyInterestRate))*(monthOfNumbers-1))* (1+monthlyInterestRate); String sal = new DecimalFormat("#.000").format(allMoney); //输出结果 System.out.printf(monthOfNumbers+"个月后你的账户上的存款是:" +" "+sal); } } 这是我又重新改进后的程序,还是达不到题目的要求!!!!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧