我是不熟悉Java的人,现在在Java类中遇到了一些问题,将需要有关我的特定代码的帮助。我一直试图在这里查看其他人的问题,但这绝不是我真正需要的。这是我的指示:
创建一个名为CompoundInterestYourLastName
的Java文件。编写一种称为computeBalance()
的方法,该方法在给定的年限之后,以给定的初始余额和利率计算银行帐户的余额。假设利息每年递增。
使用循环来控制方法中各个年份的迭代。
您的方法应返回一个双精度值。
在您的主要方法中,运行以下测试以验证您的方法是否正常工作。
System.out.printf("Your total is $%.2f", computeBalance(1000, .045, 3));
// should return $1141.17
我正在使用eclipse,我当前的唯一错误是在注释中。我还需要一些一般性提示,并让我知道我的逻辑是否错误。可能是。 :D
尽管我一直在尝试不同的方法,但这是我目前的情况:
import java.util.Scanner;
import java.lang.Math;
public class CompoundInterestTidwell {
public static void main(String[] args) {
double compInt = computeBalance(1000, 0.045, 3);
System.out.printf("Your new balance is $%.2f", compInt);
}
// Getting arror for line of code below.
// Error: This method must return a result of type double
public static double computeBalance(int P, double r, int t) {
// Formula for compounding interest
// A = P(1+(r/n))^(n(t))
// The examples to check my math had rate already divided by 100 so I left out r/n.
for(int c = 0; c <= t; c++ ) {
// deleted 'n' from equation because it need to equal 1 anyways.
double compInt = Math.pow(P*(1+r), t);
if (c < t) {
c++;
return compInt;
}
}
}
}
谢谢。
答案 0 :(得分:1)
您的函数computeBalance
不保证返回值,因为唯一的return语句位于循环内的if
子句中(使它成为两个条件)。
这是编译器警告您的事情。基本上,它会扫描您的代码,并确保声明为double
的函数实际上将返回类型为double
的有效值,依此类推。
如果在函数的正文末尾添加return语句(或引发错误),则应编译该语句。
我不能完全确定您的函数在技术上的作用,但是我已经对其进行了重写,因此它应该返回相同的值,但现在应该可以编译。
public static double computeBalance(int P, double r, int t) {
// Formula for compounding interest
// A = P(1+(r/n))^(n(t))
// The examples to check my math had rate already divided by 100 so I left out r/n.
double compInt = 0; // Declare compInt outside the loop.
for(int c = 0; c <= t; c++ ) {
// deleted 'n' from equation because it need to equal 1 anyways.
compInt = Math.pow(P*(1+r), t);
if (c < t) {
c++;
break; // Break instead of return, will immediately
// go to the return statement outside the loop.
}
}
return compInt; // Moved the return statement to outside the loop so
// the function always will return a double.
}