如何在没有参数和实参的方法之间传递变量



我的一个学校项目有点问题。我们应该写一个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:tt" + numOfYears + "nLoan Amount:ttt" + loanAmnt;
            return total;
        }
    }

我的问题是getTotalPayment方法。如果我没有将monthlyPayment声明为字段(如annualInterestRate)或将其传递给getTotalPayment方法,它就无法访问monthlyPay变量。问题是,getTotalPayment不允许有参数,我们也不允许有比她指示我们拥有的三个字段更多的字段,这三个字段将在代码开头声明。那么,我的问题是:有没有一种方法可以让变量monthlyPayment可用于getTotalPayment,而不需要让monthlyPay成为字段或给getTotalPayment一个参数?

您的getTotalPayment()方法中存在拼写错误。

您要做的是在应该调用getMonthlyPayment()的时候调用方法getmonthlyPayment()

如果你错过了我答案中的细微差别,当你想要大写的"m"时,你就用小写的"m"。

我不完全确定这是否是你的问题,但这是我的IDE告诉我的唯一语法错误。

在修改后的代码中,在调用getMonthlyPayment()时需要使用大写M

最新更新