2016-12-04 31 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]或小于/等于它。