Fayo
@Fayo
Притворись дураком 5 минут, чем быть им всю жизнь.

Как сделать правильную проверку делится ли число на другое число?

Есть код который определяет делится ли число на 5 или на 3

Но если попадёт число 15 он должен вывести "15 делится на 3 и 5", но выводит "15 делится на 5"

var a= Math.random() * 24 + 1;
    a=parseInt(a);

if(a % 5 == 0){
    console.log(a + " делится на 5")
}
else if(a % 3 == 0){
    console.log(a + " делится на 3");
}
else if(a % 3 && a % 5 == 0){
    console.log(a + " делится на 3 и 5");
}
else if(a % 3 && a % 5 !== 0){
    console.log(a + " не делится на 3 и 5");
}


где то тут моя ошибка, но не могу понять
else if(a % 3 && a % 5 == 0){
    console.log(a + " делится на 3 и 5");
}


https://jsfiddle.net/ne1g4du9/1
  • Вопрос задан
  • 198 просмотров
Решения вопроса 1
alexk111
@alexk111
Автор Ботодрома (автоматизация Telegram, VK и др.)
Во-первых, в `a % 3 && a % 5 == 0` для `a%3` истиной будет если a не делится на 3. Исходя из строки для консоль-лога, вы хотите сделать наоборот, чтобы истина была если делится на 3. Тогда нужно `a%3===0 && a%5===0`.
Во-вторых, `a%3===0 && a%5===0` должно быть первым условием if, иначе a%5===0 и a%3===0 в отдельности имеют высший приоритет и до проверки соответствия и тому, и тому условию оно никогда не будет доходить.
В-третьих, последний if - избыточен. Его можно заменить на просто else.

И parseInt во-второй строке также не нужен. Так как 'Math.random() * 24 + 1' итак возвращает значение типа Number(Число)

Итого:
var a= Math.random() * 24 + 1;

if (a % 3 === 0 && a % 5 === 0) {
    console.log(a + " делится на 3 и 5");
} else if(a % 5 === 0){
    console.log(a + " делится на 5")
} else if(a % 3 === 0){
    console.log(a + " делится на 3");
} else {
    console.log(a + " не делится на 3 и 5");
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы