方法中的For循环和if语句

时间:2018-10-13 22:41:59

标签: java for-loop if-statement math methods

我是不熟悉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;
            }
        }
    }
}

谢谢。

1 个答案:

答案 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.
}