0

Please help me figure it out. The task is simple, but for some reason I can not solve it. How to show the result that depends on the condition?

let numLevel = 25;
for (i = numLevel; i >= 30; i++) {
  if (28 < numLevel <= 30) {
    console.log('result 1');
  }
  if (21 < numLevel < 28) {
    console.log('result 2');
  }
  if (15 < numLevel < 21) {
    console.log('result 3');
  }
  if (10 < numLevel < 15) {
    console.log('result 4');
  }
  if (7 < numLevel < 10) {
    console.log('result 5');
  }
  if (0 <= numLevel < 7) {
    console.log('result 6');
  } else {
    console.log('Nan')
  }
}

or

let numLevel = 25;

if (28 < numLevel <= 30) {
  console.log('result 1');
}
if (21 < numLevel < 28) {
  console.log('result 2');
}
if (15 < numLevel < 21) {
  console.log('result 3');
}
if (10 < numLevel < 15) {
  console.log('result 4');
}
if (7 < numLevel < 10) {
  console.log('result 5');
}
if (0 <= numLevel < 7) {
  console.log('result 6');
} else {
  console.log('Nan')
}

Should appear "result 2"

Thank you in advance!

mplungjan
  • 169,008
  • 28
  • 173
  • 236
Stan Law
  • 61
  • 6
  • When the `for` loop starts, `i` is set to `25`. The loop runs while `i` is `>= 30` but this never happens. – axiac Aug 07 '22 at 18:52
  • The `for` loop is not even needed. The code inside it does not depend on the loop variable `i`. Unless you want to execute the same code several times but it does not make any sense here. – axiac Aug 07 '22 at 18:53
  • Also use console.log instead of alert – mplungjan Aug 07 '22 at 18:57

2 Answers2

0

You need to add 2 different checks. also, check if isNaN

let numLevel = 25;

if (28 < numLevel && numLevel <= 30) {
  alert('result 1');
}
if (21 < numLevel && numLevel < 28) {
  alert('result 2');
}
if (15 < numLevel && numLevel < 21) {
  alert('result 3');
}
if (10 < numLevel && numLevel < 15) {
  alert('result 4');
}
if (7 < numLevel && numLevel < 10) {
  alert('result 5');
}
if (0 <= numLevel && numLevel < 7) {
  alert('result 6');
} else if (isNaN(numLevel)) {
  alert('Nan');
}
Deyan Petrov
  • 150
  • 4
0

Couple of issues:

  • you have to use && to concatenate conditions
  • the task is not logically defined:
    • IF you want to list all ranges that numLevel is included?
      • what if ranges intersect? e.g. share at least one common point; what is the expected output in this case?
    • OR you want to see only first range that includes numLevel?
      • you have to use else if for exhaustiveness

To see the first range that includes numLevel = 25

let numLevel = 25;

if (28 < numLevel && numLevel <= 30) {
    alert('result 1');
} else if (21 < numLevel  && numLevel < 28) {
    alert('result 2');
} else if (15 < numLevel && numLevel < 21) {
    alert('result 3');
} else if (10 < numLevel && numLevel < 15) {
    alert('result 4');
} else if (7 < numLevel && numLevel < 10) {
    alert('result 5');
} else if (0 <= numLevel && numLevel < 7) {
    alert('result 6');
} else {
   alert('Nan')
}

to see all ranges that include numLevel = 25:

let numLevel = 25;

if (28 < numLevel && numLevel <= 30) {
    alert('numLevel is in (28;30] : result 1');
}

if (21 < numLevel  && numLevel < 28) {
    alert('numLevel is in (21;28) : result 2');
}

if (15 < numLevel && numLevel < 21) {
    alert('numLevel is in (15;21) : result 3');
}

if (10 < numLevel && numLevel < 15) {
    alert('numLevel is in (10;15) : result 4');
}

if (7 < numLevel && numLevel < 10) {
    alert('numLevel is in (7;10) : result 5');
}

if (0 <= numLevel && numLevel < 7) {
    alert('numLevel is in [0;7): result 6');
} 

P.S. advice - try to use Node and console.log for a better usability during your dev journey. This one is a good basic Node install and usage YouTube video

Ievgen
  • 1,999
  • 2
  • 12
  • 24