Javascript程序会在表输出中抛出不必要的间隙

时间:2017-04-07 20:41:28

标签: 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);

输出

Year    Balance     Payment #     Interest Paid      Minimum Payment
        1492.50      1              22.50             29.85
        1485.04      2              44.89             29.70
        1477.61      3              67.16             29.55
        1470.22      4              89.33             29.40
        1462.87      5              111.38             29.26
        1455.56      6              133.32             29.11
        1448.28      7              155.16             28.97
        1441.04      8              176.88             28.82
        1433.83      9              198.50             28.68
        1426.67      10              220.00             28.53
        1419.53      11              241.40             28.39
2
        1405.37      13              283.88             28.11
        1398.35      14              304.96             27.97
        1391.35      15              325.94             27.83
        1384.40      16              346.81             27.69
        1377.47      17              367.58             27.55
        1370.59      18              388.24             27.41
        1363.73      19              408.80             27.27
        1356.92      20              429.25             27.14
        1350.13      21              449.61             27.00
        1343.38      22              469.86             26.87
        1336.66      23              490.01             26.73
3

我不明白如何制作它以便与年份号一起显示相应的数据,因为当我现在运行它时它会跳过其余部分并在下一行再次显示它。还想知道如何在第一行中有1表示第1年。所需的输出如下所示。

Desired Output

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

要改变两件事:

  1. 付款初始化为0而不是1:

    var payments = 0;
    
  2. 在三元运算符周围使用括号,因为它没有优先于其后的+

    console.log((yearChange? year: "") + "        " + balance.toFixed(2) +
        // ...etc.
    
  3. 由于月份数基于零,您可能希望在其显示中添加一个,如下所示:

            "      " + (payments+1) + 
    

    或者,或者,在console.log

    之前移动以下增量
            payments++;