Java 如何编写按年度计算复利的方法?

Java 如何编写按年度计算复利的方法?,java,Java,或者这个: return amount - 1000; 编辑这是我要做的,因为今晚就要交了。谢谢大家的帮助。:) 问题是,balance不返回任何内容(这是一个void函数)。将其更改为: return amount - principal; 在该函数中,返回余额 Java告诉您它需要一个对象[],因为printf的定义如下: public static double balance(double principal, double rate, double years) { ... pu

或者这个:

return amount - 1000;

编辑这是我要做的,因为今晚就要交了。谢谢大家的帮助。:)

问题是,
balance
不返回任何内容(这是一个
void
函数)。将其更改为:

return amount - principal;
在该函数中,
返回
余额

Java告诉您它需要一个
对象[]
,因为
printf
的定义如下:

public static double balance(double principal, double rate, double years) {
...
public static void printf(String format, Object ... params) {
    // params is an Object[]
}
printf("some string", first, second, etc);
public static void printf(String format, Object[] params);
这样做的目的是传递如下参数:

public static double balance(double principal, double rate, double years) {
...
public static void printf(String format, Object ... params) {
    // params is an Object[]
}
printf("some string", first, second, etc);
public static void printf(String format, Object[] params);
它允许您传递任意数量的参数,并且函数可以像传递数组一样处理这些参数

它的定义与此完全相同:

public static double balance(double principal, double rate, double years) {
...
public static void printf(String format, Object ... params) {
    // params is an Object[]
}
printf("some string", first, second, etc);
public static void printf(String format, Object[] params);
你是这样使用的:

public static double balance(double principal, double rate, double years) {
...
public static void printf(String format, Object ... params) {
    // params is an Object[]
}
printf("some string", first, second, etc);
public static void printf(String format, Object[] params);
它只是更容易使用

编辑:


另一个选项是不在
main
中打印任何内容,但我绝对建议返回结果并在
main
中打印。这遵循使每个函数尽可能少地执行的原则<代码>余额应该只计算余额。打印它是不相关的。

问题是
余额
不会返回任何内容(这是一个
无效
函数)。将其更改为:

return amount - principal;
在该函数中,
返回
余额

Java告诉您它需要一个
对象[]
,因为
printf
的定义如下:

public static double balance(double principal, double rate, double years) {
...
public static void printf(String format, Object ... params) {
    // params is an Object[]
}
printf("some string", first, second, etc);
public static void printf(String format, Object[] params);
这样做的目的是传递如下参数:

public static double balance(double principal, double rate, double years) {
...
public static void printf(String format, Object ... params) {
    // params is an Object[]
}
printf("some string", first, second, etc);
public static void printf(String format, Object[] params);
它允许您传递任意数量的参数,并且函数可以像传递数组一样处理这些参数

它的定义与此完全相同:

public static double balance(double principal, double rate, double years) {
...
public static void printf(String format, Object ... params) {
    // params is an Object[]
}
printf("some string", first, second, etc);
public static void printf(String format, Object[] params);
你是这样使用的:

public static double balance(double principal, double rate, double years) {
...
public static void printf(String format, Object ... params) {
    // params is an Object[]
}
printf("some string", first, second, etc);
public static void printf(String format, Object[] params);
它只是更容易使用

编辑:


另一个选项是不在
main
中打印任何内容,但我绝对建议返回结果并在
main
中打印。这遵循使每个函数尽可能少地执行的原则<代码>余额应该只计算余额。打印它是不相关的。

您的错误,请执行以下操作:

printf("some string", new Object[] { first, second, etc});

如果您的错误,请执行以下操作:

printf("some string", new Object[] { first, second, etc});
有几点:

  • balance()
    不能为空,因为您在
    S.out.printf()
    中使用了它的返回值。您想让balance打印到屏幕上,还是想让它产生一个数字

  • 您的循环
    for(years=0;years>10;years++)
    将不会运行。想想为什么。将的
    转换为
    while
    ,将原因可视化,可能会有所帮助

  • 你以年为单位读双倍,然后在循环中用它作为计数器。实际上应该是什么类型的

  • 您的
    balance()
    函数接受三个参数,然后立即获取输入并删除它们。您希望
    balance()
    提供这些数字,还是希望它获取这些数字

否则,您似乎在正确的轨道上。

有几点:

  • balance()
    不能为空,因为您在
    S.out.printf()
    中使用了它的返回值。您想让balance打印到屏幕上,还是想让它产生一个数字

  • 您的循环
    for(years=0;years>10;years++)
    将不会运行。想想为什么。将
    转换为
    while
    ,将原因可视化,可能会有所帮助

  • 你以年为单位读双倍,然后在循环中用它作为计数器。实际上应该是什么类型的

  • 您的
    balance()
    函数接受三个参数,然后立即获取输入并删除它们。您希望
    balance()
    提供这些数字,还是希望它获取这些数字


另外,你似乎是在正确的轨道上。

请考虑对代码进行更剧烈的重新工作;实际上,您的

balance()
函数正在完成程序的所有工作(您的
printf()
行感觉像是事后诸葛亮)。如果您根据代码的功能分解代码,我认为您可以做得更好:

  • 创建一个函数,提示用户,然后读取他们的输入
  • 创建一个函数,对本金、利率和年份调用前一个函数三次
  • 创建一个计算和填充付款计划的函数。跟踪年度、余额、付款、本金支付和利息支付。(或者只是你感兴趣的变量——但要注意,程序往往会增加新功能,而这些变量通常是用户(或教授)在偿还贷款时要求知道的第二件事。)
  • 创建用于打印付款计划中选定列的函数
  • 创建一个编排先前函数的函数
当您在三周内重新编写使用GUI或Web服务的程序时,您一定会感谢自己编写了每个函数来完成一项任务,并且做得很好。您还将发现,测试只执行一项任务的较小代码片段要容易得多


存在过度设计过于通用的解决方案的风险——我真正想建议的是将代码功能分解为多个较小的例程,这些例程完全按照它们的名称执行。您可能永远不会将程序移到GUI或WebService或其他任何东西,但是当有人报告您的摊销计划是错误的,您可以通过更简单的编程来控制它,而不是整天重新输入。

< P>请考虑代码的更大的重新工作;实际上,您的
balance()
函数正在完成程序的所有工作(您的
printf()
行感觉像是事后诸葛亮)。如果您根据代码的功能分解代码,我认为您可以做得更好:

  • 创建一个函数,提示用户,然后读取他们的输入
  • 创建一个函数