一道关于等额本息还款的计算,为什么结果是错误的?有什么不对的地方么?

latitude4 2011-07-26 11:18:19

package day02;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* 等额本息还款计算
* @param payment 总贷款数额 200000
* @param ret 年利率 如 5.58
* @param num 分期月份数量 180
* @return 每月还款金额 1642.66
*/
public class Credit {

public static void main(String[] args) throws NumberFormatException,
IOException {
System.out.println("以下程序将实现等额本息还款的计算");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入贷款金额:");
double payment = Double.parseDouble(br.readLine());// 贷款金额

System.out.print("请输入年利率:"); // 年利率
double ret = Double.parseDouble(br.readLine());

System.out.print("请输入贷款期数,即贷款月数:"); // 分期月份数量
int num = Integer.parseInt(br.readLine());

br.close();

System.out.println("每月还款金额为:"+payPerMonth(payment,ret,num));
}
public static double payPerMonth(double payment, double ret, int num) {
// 等额本息还款计算,其中date 为月利率
double date=ret/12;
return (payment*(date*Math.pow(1+date, num)))/Math.pow((1+date),(num-1));
}
}

...全文
280 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunhuacaoni 2011-10-29
  • 打赏
  • 举报
回复
看代码猜楼主应该是达内的学员吧 ,这是开课第二天的作业 楼主你应该在达内学了有几个月了,能告诉我你在达内学习的感受吗?我准备报达内培训班的,不知道怎么样 希望你们过来人给点意见 越详细越好 谢谢了
永恒魔界 2011-10-25
  • 打赏
  • 举报
回复
楼主,实际上通过的代码是什么,给我看一下,完整的代码 谢谢
latitude4 2011-07-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hudie1234567 的回复:]

Java code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;

/**
* 等额本息还款计算
* @param payment 总贷款数额 200000
* @param re……
[/Quote]

万谢!
茫茫大海 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 heiboyyang 的回复:]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* 等额本息还款计算
* @param payment 总贷款数额 200000
* @param ret 年利率 如 5.58
* @param num 分期月份数量 ……
[/Quote]
先要找到问题,然后才可以解决。
茫茫大海 2011-07-27
  • 打赏
  • 举报
回复

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* 等额本息还款计算
* @param payment 总贷款数额 200000
* @param ret 年利率 如 5.58
* @param num 分期月份数量 180
* @return 每月还款金额 1642.66
*/
public class Credit {

public static void main(String[] args) throws NumberFormatException,
IOException {
System.out.println("以下程序将实现等额本息还款的计算");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入贷款金额:");
double payment = Double.parseDouble(br.readLine());// 贷款金额
System.out.print("请输入年利率:"); // 年利率
double ret = Double.parseDouble(br.readLine());

System.out.print("请输入贷款期数,即贷款月数:"); // 分期月份数量
int num = Integer.parseInt(br.readLine());

br.close();

System.out.println("每月还款金额为:"+payPerMonth(payment,ret,num));
}
public static double payPerMonth(double payment, double ret, int num) {
// 等额本息还款计算,其中date 为月利率
/////////////////////////
//年利率为ret/100。
/////////////////////////
double date=ret/100/12;
System.out.println(date);
System.out.println(payment);
System.out.println(num);
//return (payment*(date*Math.pow(1+date, num)))/Math.pow((1+date),(num-1));
//计算公式是这样的。而不是你上面的那个。
return (payment * date * Math.pow(1+date, num)) / (Math.pow(1+date,num) - 1);
}
}

程序中的问题是输入的年利率为a,这时候实际上表示利率为a%,所以在计算月利率的时候要先除以100。
还有一个问题是,计算公式出错了。可以参考下面的。
http://zhidao.baidu.com/question/94148083.html
茫茫大海 2011-07-27
  • 打赏
  • 举报
回复

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;

/**
* 等额本息还款计算
* @param payment 总贷款数额 200000
* @param ret 年利率 如 5.58
* @param num 分期月份数量 180
* @return 每月还款金额 1642.66
*/
public class Credit {

public static void main(String[] args) throws NumberFormatException,
IOException {
System.out.println("以下程序将实现等额本息还款的计算");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入贷款金额:");
double payment = Double.parseDouble(br.readLine());// 贷款金额
System.out.print("请输入年利率:"); // 年利率
double ret = Double.parseDouble(br.readLine());

System.out.print("请输入贷款期数,即贷款月数:"); // 分期月份数量
int num = Integer.parseInt(br.readLine());

br.close();

double value = payPerMonth(payment,ret,num);
DecimalFormat df = new DecimalFormat("#.00");//用DecimalFormat格式化结果
System.out.println("每月还款金额为:"+df.format(value));
}
public static double payPerMonth(double payment, double ret, int num) {
// 等额本息还款计算,其中date 为月利率
/////////////////////////
//年利率为ret/100。
/////////////////////////
double date=ret/100/12;
System.out.println(date);
System.out.println(payment);
System.out.println(num);
//return (payment*(date*Math.pow(1+date, num)))/Math.pow((1+date),(num-1));
//计算公式是这样的。而不是你上面的那个。
double value = (payment * date * Math.pow(1+date, num)) / (Math.pow(1+date,num) - 1);
return value;
}
}
latitude4 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hudie1234567 的回复:]

Java code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* 等额本息还款计算
* @param payment 总贷款数额 200000
* @param ret 年利率 如 5.58
* @param nu……
[/Quote]
但结果只取两位小数怎么取呢
latitude4 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hudie1234567 的回复:]

Java code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* 等额本息还款计算
* @param payment 总贷款数额 200000
* @param ret 年利率 如 5.58
* @param nu……
[/Quote]
太感谢您了!
kaiyundiannao 2011-07-26
  • 打赏
  • 举报
回复
学习咯
HeiBoyYang 2011-07-26
  • 打赏
  • 举报
回复

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* 等额本息还款计算
* @param payment 总贷款数额 200000
* @param ret 年利率 如 5.58
* @param num 分期月份数量 180
* @return 每月还款金额 1642.66
*/
public class Credit {

public static void main(String[] args) throws NumberFormatException,
IOException {
System.out.println("以下程序将实现等额本息还款的计算");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入贷款金额:");
double payment = Double.parseDouble(br.readLine());// 贷款金额

System.out.print("请输入年利率:"); // 年利率
double ret = Double.valueOf(br.readLine());

System.out.print("请输入贷款期数,即贷款月数:"); // 分期月份数量
int num = Integer.parseInt(br.readLine());

br.close();

System.out.println("每月还款金额为:"+payPerMonth(payment,ret,num));
}
public static double payPerMonth(double payment, double ret, int num) {
// 等额本息还款计算,其中date 为月利率
double date=ret/12;
return (payment*(date*Math.pow(1+date, num)))/Math.pow((1+date),(num-1));
}
}

运行一下代码
latitude4 2011-07-26
  • 打赏
  • 举报
回复
呃 可是还是错的……
HeiBoyYang 2011-07-26
  • 打赏
  • 举报
回复

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* 等额本息还款计算
* @param payment 总贷款数额 200000
* @param ret 年利率 如 5.58
* @param num 分期月份数量 180
* @return 每月还款金额 1642.66
*/
public class Credit {

public static void main(String[] args) throws NumberFormatException,
IOException {
System.out.println("以下程序将实现等额本息还款的计算");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入贷款金额:");
double payment = Double.parseDouble(br.readLine());// 贷款金额

System.out.print("请输入年利率:"); // 年利率
double ret = Double.valueOf(br.readLine());

System.out.print("请输入贷款期数,即贷款月数:"); // 分期月份数量
int num = Integer.parseInt(br.readLine());

br.close();

System.out.println("每月还款金额为:"+payPerMonth(payment,ret,num));
}
public static double payPerMonth(double payment, double ret, int num) {
// 等额本息还款计算,其中date 为月利率
double date=ret/12;
return (payment*(date*Math.pow(1+date, num)))/Math.pow((1+date),(num-1));
}
}

这样就ok double ret = Double.parseDouble(br.readLine());改成double ret = Double.valueOf(br.readLine());

62,614

社区成员

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

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