2016-12-04 30 views
-3

不知道爲什麼第二個for循環中的if語句沒有執行,任何能指向正確方向的人都會被讚賞。if語句不在循環內部執行

function checkCashRegister(price, cash, cid) { 
    var change; 
    var balance = []; 
    var total = 0; 
    for (var i = 0; i<cid.length; i++) { 
    total += cid[i][1]; 
    change = cash - price; 
    if (total < change) { 
     return "Insufficient Funds"; 
    } else if (total === change) { 
     return "Closed"; 
    } 
    } 
    for (var x = 8; x >= 0; x--) { 
    if (change > cid[x][1] && change <= cid[x][1]) { 
     balance.push(cid[x-1][1]); 
    } 
    } 
    return balance; 
} //end function 

checkCashRegister(19.50, 20.00, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME",  3.10], ["QUARTER", 4.25], ["ONE", 90.00], ["FIVE", 55.00], ["TEN", 20.00], ["TWENTY", 60.00], ["ONE HUNDRED", 100.00]]); 
+4

條件沒有意義。價值不能更大,同時更小/相等。 – tkausl

+1

...除非'cid [x]'有一個getter,它在每次讀取''1'''屬性時返回一個不同的值。不太可能。 – Oriol

+0

'change> cid [x] [1] && change <= cid [x] [1]'沒有意義..?你不是在想'改變> cid [x] [1] &&改變<= cid [x-1] [1]'或類似的東西嗎? –

回答

1

讓我們來看看if語句的邏輯:change > cid[x][1] && change <= cid[x][1]

你是說,如果change大於cid[x][1]change小於或等於cid[x][1]。該邏輯永遠不會執行,因爲一個數字不能同時大於或小於或等於另一個數字。

change = 5cid[x][1] = 0.25,將這些值插入到邏輯中,你會發現5不可能同時大於或小於或等於0.25。 (5 > 0.25 && 5 <= 0.25)。

1

if語句試圖檢查change是否大於cid[x][1]而且change小於/等於cid[x][1]

這永遠不會是真的。

change將始終大於cid[x][1]或小於/等於它。