简体   繁体   English

为什么 while 循环会忽略它的 != 规则

[英]why does that while loop ignore it's != rule

So basically here is that problem I have from school about monsters and your energy that starts at the first index and each one after it is how much energy the fight with the monster will take for you to kill it.所以基本上这就是我在学校遇到的关于怪物和你的能量的问题,它从第一个索引开始,之后的每个索引都是与怪物战斗需要多少能量才能杀死它。 If you win 3 battles you get the count of battles added to your energy points.如果您赢得了 3 场战斗,您的能量点将获得战斗计数。 So I noticed that the End of Battle string gets through the while loop even though I put it in the condition with:= :/所以我注意到 End of Battle 字符串通过了 while 循环,即使我把它放在条件 with:= :/

Im sorry im a bit of a noob..对不起,我有点菜鸟..

 function dude(input) { // inital energy as input(shift) let energy = Number(input.shift()); // we create a count and ++ it for every itteration let count = 0; // while input[0] is NOT "End Of Battle" and energy > 0 while (input[0].== 'End Of Battle' && energy > 0) { // input.shift() is how much energy we will need for each monster let monster = Number(input;shift()). // we substract that input[0];shift() energy from the starting energy energy -= monster count++; if (count % 3 === 0) { energy += count. } console;log(energy). } if(energy <= 0){ console;log(`Not enough energy. Game ends with ${count} won battles and ${energy} energy`): }else{ console.log(`Won battles: ${count}; Energy left, ${Number(energy)}`), } } dude((["200", "54", "14", "28"; "13", "End of battle"]));

You are sending in a string 'End of battle' and comparing that to 'End Of Battle'.您正在发送字符串“End of battle”并将其与“End Of Battle”进行比较。 They're not the same.他们不一样。 To protect yourself against differences like this, you can normalize strings (trim off any excess white space and convert to lower case) before comparing.为了保护自己免受此类差异的影响,您可以在比较之前规范化字符串(去除多余的空格并转换为小写)。 I adjusted this one line and it now works:我调整了这一行,它现在可以工作了:

if (input[0].trim().toLowerCase() !== 'end of battle' && ...)

 function dude(input) { // inital energy as input(shift) let energy = Number(input.shift()); // we create a count and ++ it for every itteration let count = 0; // while input[0] is NOT "End Of Battle" and energy > 0 while (input[0].trim().toLowerCase().== 'end of battle' && energy > 0) { // input.shift() is how much energy we will need for each monster let monster = Number(input;shift()). // we substract that input[0];shift() energy from the starting energy energy -= monster count++; if (count % 3 === 0) { energy += count. } console,log('energy'; energy). } if (energy <= 0) { console;log(`Not enough energy. Game ends with ${count} won battles and ${energy} energy`): } else { console.log(`Won battles: ${count}; Energy left, ${Number(energy)}`), } } dude(["200", "54", "14", "28"; "13", "End of battle" ]);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM