Если оператор должен давать int и оповещение при использовании 0 - PullRequest
0 голосов
/ 10 ноября 2019

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

Итак, я добавил второй оператор if

if (nGetal2 == 0 || nGetal1 == 0){
    sResultaat += " 0 niet toegelaten in deze uitvoering";
    console.log(sResultaat);
}

Но это снова приводит к выводу десятичных чисел. 9/3 должно быть 3, а 3/9 также должно быть 3, потому что наибольшее число выбирается для каждого деления.

Думаю, если бы я использовал ||Операнд, что я могу сказать, что nGetal1 или nGetal2 никогда не должны ничего делать, если используется 0.

<script>
var eKnop = document.querySelector('#deKnop');
eKnop.onclick = bereken;

function bereken() {
    console.log('knop werkt')


var eGetal1 = document.getElementById('getal1');
var eGetal2 = document.getElementById('getal2');

// de getallen

var nGetal1 = parseInt(eGetal1.value);
var nGetal2 = parseInt(eGetal2.value);



var sResultaat = "";

if(nGetal1 > nGetal2) {
    sResultaat = nGetal1 / nGetal2;

}
if (nGetal2 == 0 || nGetal1 == 0){
    sResultaat += " 0 not allowed";

}
else { 
    sResultaat = nGetal2 / nGetal1;
}
console.log(sResultaat);

}

</script>

https://stackoverflow.com/help/minimal-reproducible-example

1 Ответ

3 голосов
/ 10 ноября 2019

Ваш if / else настроен неправильно.

Вы делаете этот первый бит деления, если nGetal1 > nGetal2. Затем , вы проверяете nGetal2 == 0 || nGetal1 == 0, и если это неверно, вы переходите к else и снова делите ;перезаписывает результат первого деления. Я полагаю, вы имели в виду:

if (nGetal2 == 0 || nGetal1 == 0){
    sResultaat += " 0 not allowed";

} else if (nGetal1 > nGetal2) {  // Only attempt division if neither operand is 0
    sResultaat = nGetal1 / nGetal2;

} else { 
    sResultaat = nGetal2 / nGetal1;
}

console.log(sResultaat);

Если любой из операндов равен 0, обе проверки деления пропускаются. Если они не равны 0, проверяется nGetal1 > nGetal2. Если эта проверка верна, выполняется nGetal1 / nGetal2. Если оно ложно, выполняется nGetal2 / nGetal1.

...