Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

260
Visualizações
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. So I noticed that the End of Battle string gets through the while loop even though I put it in the condition 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"]));

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

You are sending in a string 'End of battle' and comparing that to '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"
]);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda