Как передать переменную между методами без параметров и аргументов

У меня есть небольшая проблема с моим школьным проектом. Предполагается, что мы напишем класс Loan, который будет заниматься, в том числе, займами, например, возвращать ежемесячный платеж и общий платеж по кредиту. Моя проблема в том, что у меня есть конкретные инструкции для этого кода, которые я абсолютно не могу выйти за пределы. Вот код:

    import java.util.Scanner;
    import java.text.DecimalFormat;
    import java.lang.Math;

    public class Loan
    {
        public double annualInterestRate = 0;
        public int numberOfYears = 0;
        public double loanAmount = 0;

        public Loan()
        {
            annualInterestRate = 0.025;
            numberOfYears = 1;
            loanAmount = 1000;
        }

        public Loan(double interestRate, int numYears, double amount)
        {
            setRate(interestRate);
            setYears(numYears);
            setLoanAmount(amount);
        }

        public void setRate(double interest)
        {
        DecimalFormat percent = new DecimalFormat( "0.0%" );
            if(interest > 25 || interest < 0)
            {
                System.out.println("WARNING: Invalid annual interest rate: " + percent.format(interest) + ".");
                System.out.println("Current value not changed: " + percent.format(annualInterestRate * 100) + ".");
            }
            else
            {
                annualInterestRate = interest;
            }
        }

        public void setYears(int years)
        {
            if(years > 30 || years <= 0)
            {
                System.out.println("WARNING: Invalid number of years: " + years + ".");
                System.out.println("Current value not changed: " + numberOfYears + ".");
            }
            else
            {
                numberOfYears = years;
            }
        }

        public void setLoanAmount(double amnt)
        {
            DecimalFormat loan = new DecimalFormat( "$#,##0.00" );
            if(amnt <= 0)
            {
                System.out.println("WARNING: Invalid loan amount: " + loan.format(amnt) + ".");
                System.out.println("Current value not changed: " + loan.format(amnt) + ".");
            }
            else
            {
                loanAmount = amnt;
            }
        }

        public double getAnnualInterestRate()
        {
            return annualInterestRate;
        }

        public int getNumberOfYears()
        {
            return numberOfYears;
        }

        public double getLoanAmount()
        {
            return loanAmount;
        }

        public double getMonthlyPayment()
        {
            double monthly = annualInterestRate/12;
            double monthlyPayment = (loanAmount * monthly)/1 - (1/(1 + monthly));
            monthlyPayment = Math.pow(monthlyPayment, 12);
            return monthlyPayment;
        }

        public double getTotalPayment()
        {
            double totalPayment = getmonthlyPayment() * 12;
            return totalPayment;
        }

        public String toString()
        {
            DecimalFormat percent = new DecimalFormat( "0.0%" );
            DecimalFormat loan = new DecimalFormat( "$#,##0.00" );

            String interestRate = percent.format(annualInterestRate);
            String numOfYears = Integer.toString(numberOfYears);
            String loanAmnt = loan.format(loanAmount);

            String total = "Annual Interest Rate:\t" + interestRate + "\nNumber of Years:\t\t" + numOfYears + "\nLoan Amount:\t\t\t" + loanAmnt;

            return total;
        }
    }

Моя проблема с методом getTotalPayment. Он не может получить доступ к переменной monthPayment без того, что я не объявил monthPayment в качестве поля, например yearInterestRate, или не передал его в метод getTotalPayment. Проблема в том, что getTotalPayment не разрешено иметь параметры, и нам не разрешено иметь больше полей, чем три, которые она указала нам, - это те три, которые вы увидите объявленными в начале кода. Итак, мой вопрос: есть ли способ сделать переменную monthPayment доступной для getTotalPayment, не делая ежемесячно PayPal в качестве поля или давая параметру getTotalPayment?

2 ответа

Решение

У вас есть орфографическая ошибка в вашем getTotalPayment() метод.

Что вы пытаетесь сделать, это вызвать метод getmonthlyPayment() когда ты должен звонить getMonthlyPayment(),

Если вы пропустили разницу в моем ответе, у вас есть строчная буква "м", когда вы хотите прописную букву "М".

Я не совсем уверен, если это ваша проблема, но это единственная синтаксическая ошибка, о которой мне говорит IDE.

В вашем пересмотренном коде вам нужен верхний регистр M в вызове getMonthlyPayment(),

Другие вопросы по тегам