2017-04-07 2 views
1

Den Code:Javascript-Programm wirft unerwünschte Lücken in einer Tabellenausgabe

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); 

Ausgabe

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 

Ich verstehe nicht, wie es zu machen, so dass zusammen mit der Jahreszahl, es zeigt auch die entsprechenden Daten, denn wenn ich es jetzt starte, überspringt es einfach den Rest und zeigt es in der nächsten Zeile wieder an. Möchten auch wissen, wie man 1 in der ersten Reihe hat, die Jahr 1 anzeigt. Die gewünschte Ausgabe wird unten gezeigt.

Desired Output

Vielen Dank für Ihre Zeit.

+0

Wollen Sie nicht stattdessen die Ausgabe in einer HTML-Tabelle anzeigen? – funcoding

+0

@funcoding Nein, nur in der Konsole gemäß den Anforderungen. – AvenNova

Antwort

3

Zwei Dinge zu ändern:

  1. Initialise Zahlungen-0 statt 1:

    var payments = 0; 
    
  2. Verwenden Sie Klammern um den ternären Operator, weil es den Vorrang vor nicht über + das folgt ihm:

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

Wie Monat Zahlen dann auf Basis Null, Sie könnte wie so eine an die Anzeige davon, hinzufügen möchten:

 "  " + (payments+1) + 

Oder alternativ nur die folgende Schritt bewegen, bevor der console.log:

 payments++; 
+1

Auch eine Möglichkeit, den Abstand konsistenter zu machen, wäre die Verwendung eines Tabs '\ t' anstelle von Leerzeichen. – imtheman

+0

Auch, wie man es so macht, dass die erste minimale Zahlung als 30,00 $ statt 29,85 $ angezeigt wird? Ich habe versucht, .15 zu der console.log hinzuzufügen, aber es hat nicht funktioniert. – AvenNova

+1

@imtheman Du bist der Mann! Es sah viel sauberer aus! – AvenNova

Verwandte Themen