javascript - 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++;
}
}
解决方案
问题是它在容器中的堆栈是 0.05 美元而不是 0.01 美元。您的 i++ 在您的 while 循环内的 for 循环内。基本上 i++ 没有被触发,所以它一直在相同的 i 值(i = 6)上循环。
推荐阅读
- codeql - 如何通过codeql中的方法调用跟踪污点数据
- python - django 中的这种视图是否安全?
- json - JsonSchema 多态对象依赖于其他字段
- ssis - 不支持包部分调试 - SSIS 错误
- javascript - Javascript:对包含对象的表进行排序
- python-3.x - IBM 自然语言理解中的元数据对象发生了什么变化?
- android-studio - Android Studio水平回收器视图OnClick - 多个类别,我该如何处理?
- node.js - 如何运行 AWS codeartifact 登录并保留默认注册表
- java - 模拟没有使用 mockitoextension.class 正确返回值(Junit5)
- javascript - 我怎样才能只制作我选择隐藏的那个?