gpt4 book ai didi

java - 帮助处理 Java 中的方法逻辑,hw

转载 作者:行者123 更新时间:2023-11-29 08:18:10 25 4
gpt4 key购买 nike

我有一个 Loan 类,它在其 printPayment 方法中打印硬件分配的贷款摊销表。我们还将实现先打印付款方式和最后打印付款方式。由于我的计算是在 printPayment 方法中完成的,所以我不知道如何在循环的第一次或最后一次迭代中获取值并打印出该金额。

我能想到的一种方法是编写一个可能返回该值的新方法,但我不确定是否有更好的方法。这是我的代码:

public abstract class Loan
{
public void setClient(Person client)
{
this.client = client;
}

public Person getClient()
{
return client;
}

public void setLoanId()
{
loanId = nextId;
nextId++;
}

public int getLoanId()
{
return loanId;
}

public void setInterestRate(double interestRate)
{
this.interestRate = interestRate;
}

public double getInterestRate()
{
return interestRate;
}

public void setLoanLength(int loanLength)
{
this.loanLength = loanLength;
}

public int getLoanLength()
{
return loanLength;
}

public void setLoanAmount(double loanAmount)
{
this.loanAmount = loanAmount;
}

public double getLoanAmount()
{
return loanAmount;
}

public void printPayments()
{
double monthlyInterest;
double monthlyPrincipalPaid;
double newPrincipal;
int paymentNumber = 1;
double monthlyInterestRate = interestRate / 1200;
double monthlyPayment = loanAmount * (monthlyInterestRate) /
(1 - Math.pow((1 + monthlyInterestRate),( -1 * loanLength)));

System.out.println("Payment Number | Interest | Principal | Loan Balance");

// amortization table
while (loanAmount >= 0) {
monthlyInterest = loanAmount * monthlyInterestRate;
monthlyPrincipalPaid = monthlyPayment - monthlyInterest;
newPrincipal = loanAmount - monthlyPrincipalPaid;
loanAmount = newPrincipal;


System.out.printf("%d, %.2f, %.2f, %.2f", paymentNumber++, monthlyInterest, monthlyPrincipalPaid, loanAmount);
}
}
/*
//method to print first payment
public double getFirstPayment()
{
}

method to print last payment
public double getLastPayment()
{
}*/

private Person client;
private int loanId;
private double interestRate;
private int loanLength;
private double loanAmount;
private static int nextId = 1;

}

谢谢!

最佳答案

您已经确定 printPayments() , printFirstPayment()printLastPayment()方法有共同的逻辑。您通常希望尽量减少此类代码的重复,两种常见的方法是:

  1. 根据其中一种方法实现除其中一种方法之外的所有方法;或者

  2. 以私有(private)方法的形式实现所有方法。

所以,例如:

public void printPayments() {
for (Payment : getPayments()) {
printPayment(payment);
}
}

public void printFirstPayment() {
printPayment(getPayments().get(0));
}

public void printLastPayment() {
List<Payment> payments = getPayments();
printPayment(payments.get(payments.size()-1));
}

private void printPayment(Payment payment) {
...
}

private List<Payment> getPayments() {
...
}

现在这是家庭作业,所以你可能没有遇到语法 List<Payment>然而。如果不是,那就是泛型。还有其他方法可以做到这一点:使用非通用 Collection或使用数组。

我想在这里说明的要点是:

  1. 创建支付和显示支付的逻辑已经分离;

  2. 单一方法getPayments()进行计算并返回 ListPayment对象。 Payment是这个模型中的一个新对象;

  3. 这三个方法都是根据getPayments()实现的和 printPayment() .

所以我希望这能引导您朝着正确的方向前进。我猜这里的概念是功能组合,根据其他功能组合您的功能,并使您的内部功能足够细化,以便有效地组合在一起。

关于java - 帮助处理 Java 中的方法逻辑,hw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2710722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com