这段代码应该根据总找零来计算我应该退还每张账单的多少钱。因此,当总找零额为 135 欧元时,应给出以下结果: 2x 50 欧元 1x 20 欧元 1x 10 欧元 1x 5 欧元
相反,我得到以下结果: 1x 50 欧元 1x 50 欧元 1x 20 欧元 1x 10 欧元 1x 5 欧元
这可能是一个非常简单的修复,但我现在只编码了一两个月,我似乎无法弄清楚。下面的代码是我现在所拥有的。
let wisselgeld = parseInt(process.argv[2], 10);
while (wisselgeld >= 5) {
let aantal50 = 0;
let aantal20 = 0;
let aantal10 = 0;
let aantal5 = 0;
if (wisselgeld >= 50) {
wisselgeld -= 50;
aantal50++;
} else if (wisselgeld < 50 && wisselgeld >= 20) {
wisselgeld -= 20;
aantal20++;
} else if (wisselgeld < 20 && wisselgeld >= 10) {
wisselgeld -= 10;
aantal10++;
} else if (wisselgeld < 10 && wisselgeld >= 5) {
wisselgeld -= 5;
aantal5++;
}
if (aantal5 > 0) {
console.log(`${aantal5}x €5`);
} if (aantal10 > 0) {
console.log(`${aantal10}x €10`);
} if (aantal20 > 0) {
console.log(`${aantal20}x €20`);
} if (aantal50 > 0) {
console.log(`${aantal50}x €50`);
}
}
我尝试在最后一个 if 语句中添加另一个条件,表示仅当 let wisselgeld 为 < 50 or < 20 etc. but then I get the following result: 1x €50 1x €20 1x €10 1x €5. So then I get a wrong result. Tried putting the 4 let variables outside the while loop but that didn't work either.
时才应记录到控制台您的代码的问题在于,变量
aantal50
、aantal20
、aantal10
和 aantal5
在 while 循环的每次迭代中都被重置为 0。这意味着每张账单的计数未正确累积。
要解决此问题,您应该在 while 循环之外声明这些变量。
let wisselgeld = parseInt(process.argv[2], 10);
let aantal50 = 0;
let aantal20 = 0;
let aantal10 = 0;
let aantal5 = 0;
while (wisselgeld >= 5) {
if (wisselgeld >= 50) {
wisselgeld -= 50;
aantal50++;
} else if (wisselgeld < 50 && wisselgeld >= 20) {
wisselgeld -= 20;
aantal20++;
} else if (wisselgeld < 20 && wisselgeld >= 10) {
wisselgeld -= 10;
aantal10++;
} else if (wisselgeld < 10 && wisselgeld >= 5) {
wisselgeld -= 5;
aantal5++;
}
}
if (aantal5 > 0) {
console.log(`${aantal5}x €5`);
}
if (aantal10 > 0) {
console.log(`${aantal10}x €10`);
}
if (aantal20 > 0) {
console.log(`${aantal20}x €20`);
}
if (aantal50 > 0) {
console.log(`${aantal50}x €50`);
}