Potluck
Potluck

Reputation: 35

Where is my logic wrong?

I want to ask the question 4 times, and alert if they user is under, over, close, or right and break loop. Where is my logic off? Recognizes everything but the last else if?

 for(var i = 0; i < 4; i++){
  var myNumber = prompt('guess my number?');
  if(myNumber > 50) {
    alert('to high');
  }else if(myNumber <= 8) {
    alert('too low');
  }else if(myNumber > 8 && myNumber < 20) {
    alert('youre getting closer');
  }else if (myNumber === 12) {
    alert('yay');
    break;
  }
}

Upvotes: 2

Views: 33

Answers (1)

Paolo
Paolo

Reputation: 15827

There are two mistakes:

First, you have (before the question was edited):

}else if(myNumber < 8 && myNumber > 20) {

Correct is:

}else if(myNumber > 8 && myNumber < 20 ) {

(I inverted < and >)

In fact you want to check if the myNumber is between 9 and 19.

Note that your original statement would always be evaluated false.


Then you have to check the correct number "12" before you check if the user is "getting closer".

The whole thing becomes:

for(var i = 1; i <= 4; i++){
  var myNumber = prompt('guess my number?');
  if (myNumber === 12) { // <-- let's check the right number first
    alert('yay');
    break;
  } else if(myNumber > 50) {
    alert('to high');
  }else if(myNumber < 3) {
    alert('too low');
  }else if(myNumber > 8 && myNumber < 20) { // <-- fixed here
    alert('youre getting closer');
  }
}

Upvotes: 2

Related Questions