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

Java 如何在没有参数和参数的方法之间传递变量,java,class,methods,mutators,Java,Class,Methods,Mutators,我的一个学校项目有点问题。我们应该编写一个Loan类,它将执行与贷款相关的操作,例如返回每月付款和贷款的总付款。我的问题是,我对这段代码有明确的说明,我绝对不能超出这个范围。 代码如下: import java.util.Scanner; import java.text.DecimalFormat; import java.lang.Math; public class Loan { public double annualIntere

我的一个学校项目有点问题。我们应该编写一个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;
        }
    }
import java.util.Scanner;
导入java.text.DecimalFormat;
导入java.lang.Math;
公共类贷款
{
公共双年度利率=0;
公共整数年份=0;
公共双loanAmount=0;
公共贷款()
{
年利率=0.025;
numberOfYears=1;
loanAmount=1000;
}
公共贷款(双倍利率,国际货币,双倍金额)
{
凝固速率(利率);
setYears(numYears);
setLoanAmount(金额);
}
公共无效设定利率(双倍利息)
{
DecimalFormat百分比=新的DecimalFormat(“0.0%”);
如果(利息>25 | |利息<0)
{
System.out.println(“警告:无效年利率:“+百分比格式(利息)+”);
System.out.println(“当前值未更改:+百分比格式(AnnualInterestate*100)+”);
}
其他的
{
年利率=利息;
}
}
公共年数(整数年)
{

如果(years>30 | | years在修改后的代码中,调用
getMonthlyPayment()

时需要大写
M
,则
getTotalPayment()
方法中存在拼写错误

您试图做的是在应该调用
getmonthlyPayment()
时调用方法
getmonthlyPayment()

如果你错过了我答案中的细微差别,当你想要大写字母“m”时,你就有一个小写字母“m”


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

为什么不直接从getTotalPayment()调用getMonthlyPayment()函数?:)我只是尝试了一下,因为我没有想到这一点,并且得到了与使用monthlyPayment时相同的错误;即错误:找不到符号。是否添加括号?->double totalPayment=getMonthlyPayment()*12;您的类看起来很奇怪。为什么所有的方法都是静态的?如果您使方法无效,只需不返回任何内容:public void setSmtH(int-smh){this.smth=smth;}另外,从构造函数初始化静态字段是非常非常错误的。请记住,一个类的所有实例都共享相同的静态字段。这可能不是因为您没有设置答案的格式以将方法包含在代码格式中。另一个原因可能是您的答案太短或没有提供足够的信息。欢迎光临对于第一篇帖子,不管是谁!无论如何,在时间戳从几分钟变为几小时之前-我想记录下我在@Luke Melaia;-)之前7分钟回答了这个问题,实际上比7分钟早了很多。顺便说一下,我应该说:欢迎使用Stack Overflow。为了获得更多的声誉,请访问常见问题解答并查看一些好的回答。感受一下这里的一切是如何运作的。关于你的答案,虽然有些不完整,但在技术上是正确的。