首页 > 解决方案 > js中的收银机

问题描述

我做错了什么?函数进入无限循环,但它不应该,它应该继续减去。我最近的麻烦是为什么它不减去。

    // Create an object which hold the denominations and their values



    while(i<obj1.containers.length || obj1.kusur !== 0){

        var ttt=Math.floor(obj1.kusur/obj1.containers[i]);


        if(obj1.kusur>obj1.containers[i]){
            for(var j=0;j<ttt;j++){

                ind = obj1.initial.indexOf(obj1.containers[i]);
                denomination = obj1.banknote[ind];
                obj1.kusur -= obj1.containers[i];
                temp += obj1.containers[i];
                obj1.kusur= parseFloat(obj1.kusur.toFixed(2));
                temp = parseFloat(temp.toFixed(2));

                console.log(obj1.kusur+" => "+temp+" => "+obj1.containers[i]+" => "+i);

            }

        //console.log(i);
        if(i===obj1.containers.length || obj1.kusur === 0){

            break;

        }
            i++;

        }



        /*if(obj1.kusur==temp || obj1.kusur<obj1.containers[i]){

            arr1[0] = denomination;
            arr1[1] = temp;

            change.status = "OPEN";
            change.change.push(arr1);

        }*/

    }

  }

这是一支。结果在控制台中。它在接近尾声时停止减法。为什么它在开始时起作用然后在接近尾声时不起作用?

正在编辑的代码:

while(i<obj1.containers.length || obj1.kusur !== 0){

    var ttt=Math.floor(obj1.kusur/obj1.containers[i]);


    if(obj1.kusur>obj1.containers[i]){
        for(var j=0;j<ttt;j++){

            ind = obj1.initial.indexOf(obj1.containers[i]);
            denomination = obj1.banknote[ind];
            obj1.kusur -= obj1.containers[i];
            temp += obj1.containers[i];
            obj1.kusur= parseFloat(obj1.kusur.toFixed(2));
            temp = parseFloat(temp.toFixed(2));

            console.log(obj1.kusur+" => "+temp+" => "+obj1.containers[i]+" => "+i);

        }

    }
    else{

        i++;

    }

}

标签: javascript

解决方案


问题是它在容器中的堆栈是 0.05 美元而不是 0.01 美元。您的 i++ 在您的 while 循环内的 for 循环内。基本上 i++ 没有被触发,所以它一直在相同的 i 值(i = 6)上循环。


推荐阅读