public class Balance {
public static void main(String[] args) {
System.out.printf("%.2f\n", balance(0.0, 0.0, 0.0));
}
/**
* @param principal
* @param rate
* @param years
* @return
*/
public static double balance(double principal, double rate, double years) {
double amount = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Enter the initial investment amount: ");
principal = sc.nextDouble();
System.out.print("Enter the interest rate: ");
rate = sc.nextDouble();
System.out.print("Enter the number of years: ");
years = sc.nextDouble();
for (int i = 1; i < years; i++) {
amount = principal * Math.pow(1.0 + rate, years);
amount += principal;
}
return amount - principal;
}
}
我的问题是我在 main 方法中使用的 printf 行。 Eclipse 要我将方法平衡从 void 更改为 Object[]。当我这样做时,我必须从余额中返回一个值。所以我想我的问题是,我将如何返回正确的值?我在正确的轨道上吗?感谢您的时间和建设性的批评。 :)
编辑 - 感谢大家的帮助,非常感谢 :) 我的数学有问题。我最终得到的比我应该拥有的多 1000。嗯。
那么我是否应该像这样从金额中取 1000:
return amount - 1000;
或者这个:
return amount - principal;
编辑 这就是我要做的,因为它将于今晚到期。感谢大家的协助。 :)
最佳答案
几点:
balance()
不能为 void,因为你在S.out.printf()
中使用了它的返回值。你想让余额打印到屏幕上,还是让它产生一个数字?您的循环
for (years = 0; years > 10; years++)
将不会运行。想想为什么。将for
转换为while
可能有助于可视化原因。您以
double
的形式读取 years ,然后将其用作循环中的计数器。它实际上应该是什么类型?您的
balance()
函数采用三个参数,然后立即获取输入并删除它们。您希望balance()
获得这些数字,还是希望它获取这些数字?
否则,您似乎走在了正确的轨道上。
关于java - 如何编写按年计算复利的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7910382/