我检查了其他"找不到合适的方法"线程,但没有一个用于划分,所以我不确定从这里开始。
我正在检索用户输入的文本(贷款金额(并使用它来显示每月付款。
我正在尝试显示期限为 10 年的抵押贷款的每月付款。我正在使用公式贷款金额 + (贷款金额 * 利率(/120。我意识到利息计算比这更复杂,但对于这个例子,利息不会复合。
我试过铸造贷款金额。
BigDecimal purchasePrice = new BigDecimal(purchasePriceTextField.getText());
BigDecimal downPayment = new BigDecimal(downPaymentTextField.getText());
BigDecimal loanAmount = purchasePrice.subtract(downPayment);
BigDecimal interestRate = new BigDecimal(interestRateTextField.getText());
loanAmountTextField.setText(currency.format(loanAmount));
BigDecimal temp = loanAmount + loanAmount.multiply(interestRate);
tenYearTextField.setText(currency.format(temp.divide(120, 2, RoundingMode.HALF_UP)));
确切的错误是
MortgageCalculatorController.java:69: no suitable method found for divide(int, int, RoundingMode)
tenYearTextField.setText(currency.format(temp.divide(120, 2, RoundingMode.HALF_UP)));
该错误表示在 BigDecimal 中没有与参数 int、int、RoundingMode 进行方法划分。
您可能想要使用的方法是
public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
所以你可能应该把你的第69行改成 tenYearTextField.setText(currency.format(temp.divide(BigDecimal.valueOf(120), 2, RoundingMode.HALF_UP)));
您可能还会在第 68 行收到错误,这将修复它:
BigDecimal temp = loanAmount.add(loanAmount.multiply(interestRate));