String 使用while循环比较贷款支付和月利息-逻辑错误
我目前正在开发一个while循环,它应该从用户那里获得以下信息-贷款金额、年利息和每月付款。它应将每月利息与每月付款进行比较,如果第一个月的利息超过或等于指定的付款,则会打开一个对话框,询问更大的金额,直到每月付款高于利息 在某些情况下,它似乎工作得很好(如果我为贷款输入1000,12%的利息,任何低于121的付款,程序要求更大的付款)。但是,如果我输入的贷款金额和每月付款彼此接近(500贷款金额400每月付款),我会收到错误对话框,说明我没有输入足够大的金额。啊 如果你能看一下的话,这是我的代码。谢谢String 使用while循环比较贷款支付和月利息-逻辑错误,string,if-statement,while-loop,logic,String,If Statement,While Loop,Logic,我目前正在开发一个while循环,它应该从用户那里获得以下信息-贷款金额、年利息和每月付款。它应将每月利息与每月付款进行比较,如果第一个月的利息超过或等于指定的付款,则会打开一个对话框,询问更大的金额,直到每月付款高于利息 在某些情况下,它似乎工作得很好(如果我为贷款输入1000,12%的利息,任何低于121的付款,程序要求更大的付款)。但是,如果我输入的贷款金额和每月付款彼此接近(500贷款金额400每月付款),我会收到错误对话框,说明我没有输入足够大的金额。啊 如果你能看一下的话,这是我的代
package program6;
import javax.swing.JOptionPane;
public class LoanAmount2 {
public static void main(String[] args) {
String loanAmountString = JOptionPane.showInputDialog(null, "Enter the amount for your loan.");
double loanAmount = Double.parseDouble(loanAmountString);
String annualInterestString = JOptionPane.showInputDialog(null, "Enter your annual interest rate.");
double annualInterestRate = Double.parseDouble(annualInterestString);
annualInterestRate = 1 + (annualInterestRate / 100);
String monthlyPaymentString = JOptionPane.showInputDialog(null, "Enter the amount for your monthly payment.");
double monthlyPayment = Double.parseDouble(monthlyPaymentString);
double monthlyInterestRate = 1 + (annualInterestRate / 12);
double monthlyInterest = loanAmount * monthlyInterestRate;
while (monthlyInterest >= monthlyPayment) {
monthlyPaymentString = JOptionPane.showInputDialog(null, "Your payment only covers the interest on your loan. Please enter a larger amount for your monthly payment.");
monthlyPayment = Double.parseDouble(monthlyPaymentString);
break;
}
}
}我刚刚运行了这个脚本,注意到了您的问题。该行:
double monthlyInterestRate = 1 + (annualInterestRate / 12);
应改为:
double monthlyInterestRate = annualInterestRate / 12;
如果你在这个while循环中添加一个,你的while循环将始终计算为true,因为你是将全部贷款金额乘以1.xx,我建议尝试将这个问题分解成更小的部分。在程序中多次重复此模式:
String annualInterestString =
JOptionPane.showInputDialog(null,
"Enter your annual interest rate.");
double annualInterestRate =
Double.parseDouble(annualInterestString);
我认为,如果您提供了如下方法,那么阅读代码会更容易:
double prompt_for_number(String prompt) {
/* show dialog box */
/* parse string into a Double */
/* return number */
}
这样可以让您更像这样重新编写代码:
loanAmount = prompt_for_number("Enter the amount for your loan.");
annualInterestRate = prompt_for_number("Enter your annual interest rate.");
这将使我们更容易看到所涉及的计算流程。(如果你到这里来,会发现更容易发现的实际错误。)很好的建议。我认为我的编程还没有达到那个水平(还没有达到方法),但我会记住这一点,谢谢