цикл while не останавливается, когда я передаю ему ложное утверждение, ссылающееся на строку - PullRequest
0 голосов
/ 13 марта 2019

Я хочу, чтобы пользователь выбрал число от 1 до 10, а затем решил, хотят ли они сложить или умножить 1 ... n.

Я могу отлаживать, когда пользователь вводит что-то, кроме числа от 1 до 10, используя цикл while.

Но когда я делаю то же самое со строковым значением, он не останавливает цикл while.

Что здесь происходит?

let pickNumber = prompt("pick a number from 1 - 10");
let sumTotal = 0;
let multiplyTotal = 1;

while(pickNumber < 1 || pickNumber > 10) {
    pickNumber = prompt("pick a number from 1 - 10");
}

let pickFunction = prompt("sum or multiply?")

while(pickFunction !== "sum" || pickFunction !== "multiply") {
    pickFunction = prompt('entry not recognized, try again. Choose sum or multiply')
}


switch (pickFunction) {
    case "sum": 
        sum();
        break;
    case "multiply":
        multiply()
        break;
    default:
        pickFunction = prompt('entry not recognized, try again. Choose sum or multiply')
}

function sum() {
    for (i = 1; i <= pickNumber; i++) {
        sumTotal += i;
        console.log(sumTotal)
    }
}

function multiply() {
    for (i = 1; i <= pickNumber; i++) {
        multiplyTotal *= i;
        console.log(multiplyTotal)
    }
}

1 Ответ

1 голос
/ 13 марта 2019

Ваш цикл while будет работать бесконечно - вам нужно изменить ИЛИ || на AND &&:

while(pickFunction !== "sum" && pickFunction !== "multiply") 

Также убедитесь, что вы умножаете числа и цифры, а не строки и цифры:

let pickNumber = parseInt(prompt("pick a number from 1 - 10"));
while (pickNumber < 1 || pickNumber > 10) {
    pickNumber = parseInt(prompt("pick a number from 1 - 10"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...