@justifycontent

Почему выполняется второе условие, если первое уже истинно?

После ввода правильной буквы, мне выдает alert('Вы угадали букву: ' + guess); и сразу после этого сообщения выдает alert('Вы не угадали букву'), хотя это уже второе условие и оно является false, почему так?
let words = [
    'луч'
];

let word = words[Math.floor(Math.random() * words.length)];

let answerArr = [];
for (i = 0; i < word.length; i++ ) {
        answerArr[i] = '_';    
    }

let remainingLetters = word.length;
let attempt = 0;

while (remainingLetters > 0 && attempt <= 3) {
    alert(answerArr.join(' '));
    let guess = prompt('Введите букву:');
    if (guess === null) {
    break;
    } else if (guess.length !== 1) {
        alert('Вводить можно только одну букву!');
    } else { 
        for (let h = 0; h < word.length; h++) {
            if (word[h] === guess) {
                answerArr[h] = guess;
                alert('Вы угадали букву: ' + guess);
                remainingLetters--;
            } else if (word[h] !== guess) {
                alert('Вы не угадали букву');
                attempt++;
                break;
            }    
        };
    };
};
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что у вас логика работы программы неверная в принципе.
Скажем, вы ввели букву 'у'. Ваш код выполнит проверки:
'л' === 'у'?  нет.
'л' !== 'у'?  да. Вывод сообщения 'Вы не угадали букву'.
'у' === 'у'?  да. Вывод сообщения 'Вы угадали букву: у'.
'ч' === 'у'?  нет.
'ч' !== 'у'?  да. Вывод сообщения 'Вы не угадали букву'.

Сообщение должно выводиться по результатам проверки всех букв слова, а не для каждой буквы.
Уже угаданные буквы надо исключать из проверки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
22 окт. 2020, в 06:46
3000 руб./за проект
21 окт. 2020, в 22:40
300 руб./за проект
21 окт. 2020, в 22:34
25000 руб./за проект