Рейтинг:
2
OriginalGriff
Мы не можем запустить этот код изолированно и получить те же результаты, что и вы - у нас нет доступа к значениям, которые вы используете для тестирования.
Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Как вы его используете, зависит от Вашего браузера, но быстрый поиск в Google имени и "отладчика" должен дать вам необходимую информацию.
Для Chrome вы найдете здесь много информации: Начните работу с отладки JavaScript в Chrome DevTools[^]
Другими браузерами wiull у аналогичных объектов.
Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.
Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!
Рейтинг:
2
Richard MacCutchan
Мне пришло в голову, что ваша проблема связана с использованием неправильного оператора. У вас есть следующее:
if ((m1 < 40) || (m2 < 40) || (m3 < 40) || (m4 < 40) || (m5 < 40) || (m6 < 40)) {
result = "Fail";
grade = "f";
}
else {
var mm = avg;
// code removed for readability
}
Это означает, что если какое-либо из этих значений меньше 40, то результат-провал класса F. Однако что делать, если m2, m3,m4,m5 и m6 все выше 80? Это повысило бы средний балл до более высокого. Так что я думаю, что вы имеете в виду:
if ((m1 < 40) && (m2 < 40) && (m3 < 40) && (m4 < 40) && (m5 < 40) && (m6 < 40)) {
result = "Fail";
grade = "f";
}
else {
var mm = avg;
// code removed for readability
}
Что имеет больше смысла в том, что все баллы должны быть ниже 40 для неудачи.
Patrice T
не обязательно ошибаться оператором.
неудача, если значение 1 ниже 40 имеет для меня смысл.
Richard MacCutchan
Итак, если у вас есть 89,82,84,85,80,32: среднее значение 76,6, вы думаете, что это должно быть неудачей? Для меня это не имеет никакого смысла. На самом деле, согласно тестам в пункте else, это был бы пропуск первого класса класса B.
Patrice T
Я видел такие правила.
Richard MacCutchan
Но это не имеет значения.
Patrice T
только ОП может нам сказать :)
Richard MacCutchan
Именно это я и хочу сказать.
Sanjay Taak
братан если потерпишь неудачу в одной субмарине то будешь считаться только неудачником
Richard MacCutchan
Хорошо, но это не помогает выяснить, почему предложение else никогда не выполняется. Вам нужно запустить код в отладчике и изучить каждую переменную, чтобы увидеть, что происходит.
Но, как я показал выше, можно провалить один предмет и все равно иметь средний балл, который заслуживал бы пропуска.
Sanjay Taak
братан В приведенном выше коде elseif должен быть подавлен пробелом потому что код является javascript следовательно он будет else if
Richard MacCutchan
Молодец, ты решил свою проблему.
Рейтинг:
0
W∴ Balboos, GHB
Если вы установили mm=avg и avg не был объявлен, то у вас есть условие ошибки.
javaScript останавливается в этот момент - более чем вероятно, без какого-либо сообщения об ошибке.
Кроме того, разве не имеет смысла рассчитать среднее значение перед любым тестом на оценки? Если только вся оценка не зависит от какого-либо одного теста из шести (в большинстве случаев, довольно несправедливо). Затем о <40 можно позаботиться в коммутаторе, и этот блок, проверяющий каждый экзаменационный балл на провал, может быть удален. На самом деле, вы уже делаете это в своем переключателе, так что вы ожидали, что доберетесь до этой точки, в любом случае !
Таким образом, это избавляет вас от вашего "если", и это означает, что вы также избавляетесь от остального: это просто переключатель, который вам нужен, и вам нужно вычислить это значение "avg". Кроме того, если у вас уже есть значение для 'avg', зачем вам тогда копировать его в mm и тестировать там? Просто используйте 'avg' в аргументе switch.
Еще одна вещь, которую следует учитывать: поместите свои оценки в массив. Затем вы можете иметь любое количество баллов для вашего экзамена и отслеживать статус студента в любое время, не беспокоясь о том, чтобы обрабатывать нули для еще не проведенных экзаменов.
Все его, конечно, основано на коде, который вы показали, только