2

私の学校のプロジェクトで少し問題があります。毎月の支払いとローンの合計支払いを返すなど、ローンに関連することを行う 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 メソッドにあります。MonthlyPayment 変数は、annualInterestRate などのフィールドとして宣言するか、getTotalPayment メソッドに渡さないとアクセスできません。問題は、getTotalPayment にパラメーターを指定することは許可されておらず、コードの冒頭で宣言されている 3 つのフィールドよりも多くのフィールドを指定することは許可されていないことです。それで、私の質問: monthPayment をフィールドにしたり、getTotalPayment にパラメーターを与えたりせずに、変数monthlyPayment を getTotalPayment にアクセスできるようにする方法はありますか?

4

2 に答える 2

1

メソッドにスペルミスがありますgetTotalPayment()

あなたがやろうとしているのは、呼び出すgetmonthlyPayment()必要があるときにメソッドを呼び出すことgetMonthlyPayment()です。

私の答えの微妙な違いを見逃した場合は、大文字の「M」が必要なときに小文字の「m」があります。

これがあなたの問題かどうかは完全にはわかりませんが、IDE が教えてくれる唯一の構文エラーです。

于 2015-11-06T17:09:12.610 に答える