2016-04-23 6 views
0

У меня возникли проблемы с этой программой. Я не могу понять, как получить первое число года (обратите внимание, что первый год отсутствует). Я также отформатировал мой цикл while до нуля, но я все еще получаю -20.82 и не определен в нижней части таблицы. Наконец, я все посмотрел, но я не могу найти правильную формулу для расчета. Я чувствую, что у меня ее почти нет, но мне не хватает жизненно важной части. Пожалуйста помоги!Табличное форматирование Javascript

function displayWelcome() { 
var welcome = "This program will determine the time to pay off a credit card and interest paid based on the current balance, the interest rate, and the monthly payments made."; 
return welcome; 
} 
function calculateMinimumPayment(bal, intr) { 
var min = bal * intr; 
return min; 
} 
function displayPayments(bal, intr, min) { 
var top1 = "Balance on your credit card: " + bal + "\nInterest Rate: " + intr + "\nAssuming the minimum payment of 2% of the balance ($20 min)\nYour minimum payment would be $" + min; 
var top2 = "PAYOFF SCHEDULE\n\n______________\nYear\tBalance\t\tPayment Num\tInterest Paid\n"; 
console.log(top1); 
console.log(top2); 
var yearcount = 0; 
var year = 1; 
var paynum = 0; 
while (bal >= 0) { 
    paynum++; 
    yearcount++; 
    bal = (bal+(intr-min)); 
    intrp = intr+(bal*min); 
    var tbl1 = parseFloat(bal).toFixed(2) + "\t\t" + paynum + "\t\t" + parseFloat(intrp).toFixed(2); 
    var tbl2 = " " + year + "  " + tbl1; 
    if (yearcount % 12 === 0) { 
     year = year+1; 
     var tbl2 = " " + year + "  " + tbl1; 
    } else { 
     tbl2 = "\t" + tbl1; 
    } 
    console.log(tbl2); 
} 
} 
console.log(displayWelcome()); 
console.log(displayPayments(1500,0.18,calculateMinimumPayment(1500, 0.02))); 

Вот результат:

This program will determine the time to pay off a credit card and interest paid 
based on the current balance, the interest rate, and the monthly payments made. 
Balance on your credit card: 1500 
Interest Rate: 0.18 
Assuming the minimum payment of 2% of the balance ($20 min) 
Your minimum payment would be $30 
PAYOFF SCHEDULE 

______________ 
Year Balance   Payment Num  Interest Paid 

     1470.18   1    44105.58 
     1440..98 
     1410.54   3    42316.38 
     1380.72   4    41421.78 
     1350.90   5    40527.18 
     1321.08   6    39632.58 
     1291.26   7    38737.98 
     1261.44   8    37843.38 
     1231.62   9    36948.78 
     1201.80   10    36054.18 
     1171.98   11    35159.58 
2  1142.16   12    34264.98 
     1112.34   13    33370.38 
     1082.52   14    32475.78 
     1052.70   15    31581.18 
     1022.88   16    30686.58 
     993.06   17    29791.98 
     963.24   18    28897.38 
     933.42   19    28002.78 
     903.60   20    27108.18 
     873.78   21    26213.58 
     843.96   22    25318.98 
     814.14   23    24424.38 
3  784.32   24    23529.78 
     754.50   25    22635.18 
     724.68   26    21740.58 
     694.86   27    20845.98 
     665.04   28    19951.38 
     635.22   29    19056.78 
     605.40   30    18162.18 
     575.58   31    17267.58 
     545.76   32    16372.98 
     515.94   33    15478.38 
     486.12   34    14583.78 
     456.30   35    13689.18 
4  426.48   36    12794.58 
     396.66   37    11899.98 
     366.84   38    11005.38 
     337.02   39    10110.78 
     307.20   40    9216.18 
     277.38   41    8321.58 
     247.56   42    7426.98 
     217.74   43    6532.38 
     187.92   44    5637.78 
     158.10   45    4743.18 
     128.28   46    3848.58 
     98.46   47    2953.98 
5  68.64   48    2059.38 
     38.82   49    1164.78 
     9.00   50    270.18 
     -20.82   51    -624.42 
undefined 

Позвольте мне знать, если вам нужно больше информации.

+0

Можете ли вы уменьшить код до тех, который не работает? Или показывать только минимальный код? – evolutionxbox

ответ

0

Итак, есть две проблемы.

Печать года в первом ряду. Если вы положите yearcount++ в начале цикла, когда вы дойдете до условного значения 1, значит, он не печатает. Поместите yearcount в качестве последней строки цикла.

Не печатать отрицательное значение в конце. Вы проверяете, есть ли bal>=0 в состоянии while, но вскоре после этого вы выберете 29,82 балла, а затем распечатаете. На последнем итерационном балле равно 9, затем вычитается 29.82, и он станет -20.82, а затем вы его распечатаете.

Чтобы исправить это, вы должны проверить, bal-(int-min) >= 0.

Я думаю, что это должно решить обе проблемы:

while (bal+(intr-min) >= 0) { 
    paynum++; 
    bal = (bal+(intr-min)); 
    intrp = intr+(bal*min); 
    var tbl1 = parseFloat(bal).toFixed(2) + "\t\t" + paynum + "\t\t" + parseFloat(intrp).toFixed(2); 
    if (yearcount % 12 === 0) { 
     year = year+1; 
     var tbl2 = " " + year + "  " + tbl1; 
    } else { 
     var tbl2 = "\t" + tbl1; 
    } 
    yearcount++; 
    console.log(tbl2); 
} 
+0

Это исправляет проблему года, но я все еще получаю неопределенный в конце таблицы. – dungo

+0

Странно, я не получаю никаких «неопределенных» при запуске. –

0

Fixed. Попробуйте следующее:

function displayWelcome() { 
return "This program will determine the time to pay off a credit card and interest paid based on the current balance, the interest rate, and the monthly payments made."; 

} 
function calculateMinimumPayment(bal, intr) { 
var min = bal * intr; 
return min; 
} 
function displayPayments(bal, intr, min) { 
debugger; 
var top1 = "Balance on your credit card: " + bal + "\nInterest Rate: " + intr + "\nAssuming the minimum payment of 2% of the balance ($20 min)\nYour minimum payment would be $" + min; 
var top2 = "PAYOFF SCHEDULE\n\n______________\nYear\tBalance\t\tPayment Num\tInterest Paid\n"; 
console.log(top1); 
console.log(top2); 
var yearcount = 0; 
var year = 1; 
var paynum = 0; 
while (bal >= 0) { 
    paynum++; 
    yearcount++; 
    bal = (bal+(intr-min)); 
    if(bal <= 0){ 
    break; 
    } 
    intrp = intr+(bal*min); 
    var tbl1 = parseFloat(bal).toFixed(2) + "\t\t" + paynum + "\t\t" + parseFloat(intrp).toFixed(2); 
    var tbl2 = " " + year + "  " + tbl1; 
    if (yearcount % 12 === 0 || year == 1) { 
     var tbl2 = " " + year + "  " + tbl1; 
     year++; 
    } else { 
     tbl2 = "\t" + tbl1; 
    } 
    console.log(tbl2); 
} 
} 
debugger; 
console.log(displayWelcome()); 
displayPayments(1500,0.18,calculateMinimumPayment(1500, 0.02)); 
+0

В столбце «1 год» все еще отсутствует! – dungo

+0

удалить отладчики) –

Смежные вопросы