java - 如何编写按年计算复利的方法?

标签 java

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/

相关文章:

Java程序打印字符串中的第一个非重复字符

java - 在 JFrame 中使用坐标平面

java - 保存稍后可以导入数据库的 IDataset

java - kill -退出: log not getting appended

java - maven-rar-plugin 包含配置设置为 false 的所有依赖项

java - RecyclerView 单击并替换另一个 Activity 中的图像

java - 在 Java 中实现 Trie

java - 使用 Jgit 以编程方式检索我的 Github 帐户下的所有存储库

java - Java 中的 Mongodb geonear 查询

java - 如何在不使用缓冲区的情况下就地分割文件?