Для цикла и оператора if внутри метода - PullRequest
0 голосов
/ 14 октября 2018

Я новичок в использовании java, и у меня сейчас есть некоторые проблемы с моим классом java, и мне понадобится помощь с моим конкретным кодом.Я пытаюсь смотреть на другие вопросы здесь все время, но это никогда не то, что мне нужно.Вот мои указания:

Создайте файл Java с именем CompoundInterestYourLastName.Напишите метод с именем 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 голосов
/ 14 октября 2018

Ваша функция computeBalance не гарантирует возврата значения, поскольку единственный оператор возврата находится в предложении if внутри цикла (что делает его двумя условиями глубже).

ЭтоТо, о чем вас предупреждает компилятор.По сути, он сканирует ваш код и проверяет, что функция, объявленная как double, на самом деле вернет действительное значение типа 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.

    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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...