从学渣走向未来 2022-04-08 09:37 采纳率: 72.7%
浏览 80
已结题

一道java计算还款的题,运行结果不一样,如何修改?


import java.util.Date;
import java.util.Scanner;
 
class Loan {
    private double annualInterestRate;
    private int numberOfYears;
    private double loanAmount;
    private Date loanDate;
 
    Loan() {
    }
 
    public Loan(double annualInterestRate, int numberOfYears, double loanAmount, Date loanDate) {
        loanDate = new Date();
        this.annualInterestRate = annualInterestRate;
        this.numberOfYears = numberOfYears;
        this.loanAmount = loanAmount;
        this.loanDate = loanDate;
    }
 
    public Date getLoanDate() {
        return loanDate;
    }
 
    public double getAnnualInterestRate() {
        return annualInterestRate;
    }
 
    public void setAnnualInterestRate(double annualInterestRate) {
        this.annualInterestRate = annualInterestRate;
    }
 
    public int getNumberOfYears() {
        return numberOfYears;
    }
 
    public void setNumberOfYears(int numberOfYears) {
        this.numberOfYears = numberOfYears;
    }
 
    public double getLoanAmount() {
        return loanAmount;
    }
 
    public void setLoanAmount(double loanAmount) {
        this.loanAmount = loanAmount;
    }
 
    public double getMonthlyPayment() {
        return loanAmount * (annualInterestRate / 1200) / (1 - Math.pow(1 / (1 + annualInterestRate / 1200), (numberOfYears * 12)));
    }
 
    public double getTotalPayment() {
        return (loanAmount * (annualInterestRate / 1200) / (1 - Math.pow(1 / (1 + annualInterestRate / 1200), (numberOfYears * 12)))) * numberOfYears * 12;
    }
}
 
public class test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Loan m = new Loan();
        m.setAnnualInterestRate(input.nextDouble());
        m.setNumberOfYears(input.nextInt());
        m.setLoanAmount(input.nextDouble());
        System.out.println("贷款年利率是" + m.getAnnualInterestRate());
        System.out.println("贷款总额是" + m.getLoanAmount());
        System.out.println("贷款年限是" + m.getNumberOfYears());
        System.out.println("月还款额是" + m.getMonthlyPayment());
        System.out.println("还款总额是" + m.getTotalPayment());
    }
}

img

代码和运行结果如上,红笔标出的是运行结果不一样的地方,只差那几个数,我实在搞不明白。

  • 写回答

3条回答 默认 最新

  • 不会写代码的猴子 优质创作者: 操作系统技术领域 2022-04-08 10:15
    关注
    import java.util.Date;
    import java.util.Scanner;
    
    class Loan {
        private double annualInterestRate;
        private int numberOfYears;
        private double loanAmount;
        private Date loanDate;
    
        Loan() {
        }
    
        public Loan(double annualInterestRate, int numberOfYears, double loanAmount, Date loanDate) {
            loanDate = new Date();
            this.annualInterestRate = annualInterestRate;
            this.numberOfYears = numberOfYears;
            this.loanAmount = loanAmount;
            this.loanDate = loanDate;
        }
    
        public Date getLoanDate() {
            return loanDate;
        }
    
        public double getAnnualInterestRate() {
            return annualInterestRate;
        }
    
        public void setAnnualInterestRate(double annualInterestRate) {
            this.annualInterestRate = annualInterestRate;
        }
    
        public int getNumberOfYears() {
            return numberOfYears;
        }
    
        public void setNumberOfYears(int numberOfYears) {
            this.numberOfYears = numberOfYears;
        }
    
        public double getLoanAmount() {
            return loanAmount;
        }
    
        public void setLoanAmount(double loanAmount) {
            this.loanAmount = loanAmount;
        }
    
        public double getMonthlyPayment() {
            return loanAmount * (annualInterestRate / 1200) / (1 - Math.pow(1 / (1 + annualInterestRate / 1200), (numberOfYears * 12)));
        }
    
        public double getTotalPayment() {
            return (loanAmount * (annualInterestRate / 1200) / (1 - Math.pow(1 / (1 + annualInterestRate / 1200), (numberOfYears * 12)))) * numberOfYears * 12;
        }
    }
    
    public class test {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            Loan m = new Loan();
            m.setAnnualInterestRate(input.nextDouble());
            m.setNumberOfYears(input.nextInt());
            m.setLoanAmount(input.nextDouble());
            System.out.println("贷款年利率是" + m.getAnnualInterestRate());
            System.out.println("贷款总额是" + m.getLoanAmount());
            System.out.println("贷款年限是" + m.getNumberOfYears());
            System.out.println("月还款额是" + m.getMonthlyPayment());
            System.out.println("还款总额是" + m.getTotalPayment());
        }
    }
    

    发帖第一步,学会格式化代码。不然发出来很多人都没兴趣审题了

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月19日
  • 修改了问题 4月8日
  • 创建了问题 4月8日