我正在从事一个项目,该项目将根据当前余额、利率和每月付款来确定还清信用卡的时间和支付的利息。我已经能够让我的代码为我提供正确的余额、利息和最低还款额,一直到显示的最后几行。我在让我的表执行正确的输出时遇到了一些麻烦。我已经尝试改变一些东西,但它似乎仍然显示不正确。我是 JavaScript 的新手,所以我仍在努力学习基础知识,我们将不胜感激。我将添加一个代码片段和一张我的表格应该是什么样子的图片。谢谢!
function displayWelcome() {
console.log("Welcome! \nThis program will determine the time to pay off a credit card and the interest paid based on the current balance, the interest rate, and the monthly payments made.")
}
function calculateminimumPaymentment(balance, minimumPaymentRate) {
return Math.max(20, balance * minimumPaymentRate);
}
function displayPayments(balance, interest, minimumPayment) {
console.log("Balance on your credit card: $" + balance.toFixed(2))
console.log("Interest Rate: " + (interest * 100) + "%")
console.log("Assuming a minimum payment of 2% of the balance ($20 min)")
console.log("Your minimum payment would be: $" + minimumPayment)
console.log("\nYear Balance Payment # Interest Paid Minimum Payment")
var year = 1;
var payments = 1;
var interestPaid = 0;
var yearChange;
while (balance > 0) {
yearChange = false;
if (payments % 12 == 0) {
year++
yearChange = true;
}
interestPaid += balance * interest / 12;
balance = Math.max(0, balance - (minimumPayment - balance * interest / 12));
minimumPayment = Math.max(20, balance * minimumPaymentRate);
console.log(yearChange ? year : "" + " " + balance.toFixed(2) + " " + payments + " " + interestPaid.toFixed(2) + " " + minimumPayment.toFixed(2));
payments++;
}
}
var balance = 1500;
var minimumPaymentRate = 0.02;
var interest = 0.18;
displayWelcome()
var minimumPayment = calculateminimumPaymentment(balance, minimumPaymentRate);
displayPayments(balance, interest, minimumPayment);
我在下面添加了两张图片,展示了我在运行程序时看到的内容以及程序在下面两个链接中的外观。
最佳答案
问题是运算符优先级。 ?:
条件运算符的优先级低于 +
,因此 :
部分包含所有连接的字符串,而不仅仅是 ""
应该替换年份的字符串。因此,当 yearChange
为真时显示年份,只有当 yearChange
为假时才显示其他所有内容。
解决方案是将条件表达式括在括号中。
function displayWelcome() {
console.log("Welcome! \nThis program will determine the time to pay off a credit card and the interest paid based on the current balance, the interest rate, and the monthly payments made.")
}
function calculateminimumPaymentment(balance, minimumPaymentRate) {
return Math.max(20, balance * minimumPaymentRate);
}
function displayPayments(balance, interest, minimumPayment) {
console.log("Balance on your credit card: $" + balance.toFixed(2))
console.log("Interest Rate: " + (interest * 100) + "%")
console.log("Assuming a minimum payment of 2% of the balance ($20 min)")
console.log("Your minimum payment would be: $" + minimumPayment)
console.log("\nYear Balance Payment # Interest Paid Minimum Payment")
var year = 1;
var payments = 1;
var interestPaid = 0;
var yearChange;
while (balance > 0) {
yearChange = false;
if (payments % 12 == 0) {
year++
yearChange = true;
}
interestPaid += balance * interest / 12;
balance = Math.max(0, balance - (minimumPayment - balance * interest / 12));
minimumPayment = Math.max(20, balance * minimumPaymentRate);
console.log((yearChange ? year : "") + " " + balance.toFixed(2) + " " + payments + " " + interestPaid.toFixed(2) + " " + minimumPayment.toFixed(2));
payments++;
}
}
var balance = 1500;
var minimumPaymentRate = 0.02;
var interest = 0.18;
displayWelcome()
var minimumPayment = calculateminimumPaymentment(balance, minimumPaymentRate);
displayPayments(balance, interest, minimumPayment);
关于javascript - 表格打印错误的 JavaScript 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49785602/