2017-04-07 8 views
1

コードに不要なギャップをスロー: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行目に1を持たせる方法も知りたい。希望する出力を以下に示す。お時間を

Desired Output

感謝。変更する

+0

出力をhtmlテーブルに表示したくないのですか? – funcoding

+0

@funcodingいいえ、ちょうど要件に応じてコンソールにあります。 – AvenNova

答えて

3

2つのこと:

  1. 初期化0ではなく1から支払い

    var payments = 0; 
    
  2. 三項演算子の周り
  3. 使用括弧、それは+よりも優先されていないため、それに続く:

    console.log((yearChange? year: "") + "  " + balance.toFixed(2) + 
        // ...etc. 
    

月の数字はその後、ゼロベースであるため、あなたはそうのように、それの表示に1を追加したいかもしれません:、

 "  " + (payments+1) + 

か、あるいは単にconsole.log前に、次の増分を移動します。

 payments++; 
+1

また、スペースをより一貫性のあるものにする方法は、スペースの代わりにタブ「\ t」を使用することです。 – imtheman

+0

また、最初の最小支払いが$ 29.85ではなく$ 30.00として表示されるようにする方法はありますか? .15をconsole.logに追加しようとしましたが、動作しませんでした。 – AvenNova

+1

@imthemanあなたは男です! \ tそれははるかにきれいに見えるように! – AvenNova