Во втором варианте кода (там, где нет else), код выполняется от одного if к другому.
То есть, первый if проверил, что дождь идёт и присвоил minutes значение 0. Всё, вроде, правильно.
Но.
Код выполняется дальше, доходит до второго if, проверяет, что температура от 0 до 20 и считает количество минут, не равное 0.
Как быть?
Вариант первый: использовать else, чтобы следующий if не проверялся, если выполнен предыдущий.
Вариант второй: во второй и третий if добавить проверку itsRaining. Что-то вроде if (!itsRaining && temperature >= 0 && temperature <= 20)
var temperature = 10;
var itsRaining = false;
var minutes;
if (temperature > 20 && !itsRaining) {
minutes = -temperature + 40;
}
else {
minutes = 0;
}
if (!itsRaining && temperature > 0 && temperature < 35 && temperature <= 20) {
minutes = temperature;
}
Лишь методом “научного тыка” удалось определить, что else нужно вставлять в середину, хотя по логике else направшивается в конец. Так и не понял, почему так происходит. Если кто может объяснить - буду благодарен.
if(itsRaining) {
minutes = 0;
console.log(‘Кекс, идет дождь, прогулка равна ’ + minutes + ’ времени.’);
}
if(temperature < 0 || temperature > 35) {
minutes = 0;
console.log(‘Кекс, на улице ’ + temperature + ’ поэтому погулять снова ’ + minutes + ’ минут.’);
}
if(!itsRaining && temperature == 15) {
minutes = 15;
console.log(‘Кекс, сегодня будем гулять ’ + minutes + ’ минут!’);
}
if(!itsRaining && temperature == 22) {
minutes = 18;
console.log(‘Кекс, пошли гулять на ’ + minutes + ’ минут!’);
}
у вас получается, что гулять можно только при двух температурах: 15 и 22 , а в остальных случаях, похоже, Кексу придется сидеть дома.
да, и переменные нужно объявлять до их использования в условиях, разве нет?
Я не понял просто как сделать последнее условие. Там вроде бы на цикл похож, что чем ниже температура, тем меньше гулять в минутах. У вариантов выше применяют math.abs что ли, я не знаю что это.
Буду благодарен, если поясните.
А по поводу переменных это minutes? Имеете в виду объявлять их перед каждым условием if?
последнее сообщение находится не внутри условия - поэтому оно будет выводится всегда. Если при этом ещё и сработает условие - то выведется и сообщение про количество минут прогулки.
Я использовал только то, что было в заданиях по данному курсу, ничего лишнего, что не встречалось я не использовал. Рад, что все получилось сделать самостоятельно. Код работает на 100%:
var temperature = 22;
var itsRaining = false;
var constTemperature=20;
var minutes;
if(temperature >=35 || temperature <=0 || itsRaining){
minutes=0;
}
else{
if(temperature>constTemperature) {
minutes=constTemperature-(temperature-constTemperature);}
else {
minutes=20;}
if(temperature<constTemperature){
minutes=constTemperature-(constTemperature-temperature)}
}
console.log('You can go out for walking for '+minutes+' minutes');
Спасибо. Да не учел если температура будет 20. чтобы это учитывалось достаточно изменить во втором условии в сравнении с if (!itsRaining && temperature < 20) на if (!itsRaining && temperature <= 20).