Поэтому я беру курс Javascript в своем колледже, и у меня возникли две проблемы: решения, к которым я искал всюду в Интернете. Я буду держать его в курсе, потому что я собираюсь сломать свою клавиатуру, просто подумав об этом.
Первая трудность:
var year = 2017;
var age = prompt("Please enter your age: ");
console.log("I was born in the year of " + (year - age));
var studying = prompt("Enter the number of years you expect to study in the college: ");
console.log("You will graduate from Seneca College in the year " + (year + studying));
Ожидаемый результат:
1995
2019
Фактический выход:
1995
20172//Кажется, что конкатенация, независимо от того, как я пытаюсь добавить year
и вместе studying
Вторая сложность:
function grader(x) {
switch (x) {
case (x < 50) :
console.log('Grade: F');
break;
case (x >= 50) :
console.log('Grade: D');
break;
case (x >= 60) :
console.log('Grade: C');
break;
case (x >= 70) :
console.log('Grade: B');
break;
case (x >= 80) :
console.log('Grade: A');
break;
default :
console.log('Error, invalid grade');
}
}
console.log("The letter grade is: " + grader (40));
Ожидаемый результат:
Класс письма: Оценка F
Фактический выход:
Ошибка, недопустимая оценка
Буквы, градуированные: undefined
Любая помощь будет оценена по достоинству. Я понятия не имею, почему я сталкиваюсь с этими ошибками.
year + +studying
(Добавьте число в число, а не число в строку)
switch (x) {
case (x < 50) :
равно:
if( x === x < 50 )
который равен:
if( 40 === true )
что, очевидно, неверно. Просто делать
switch (true) {
case (x < 50) :
Чтобы заставить его работать
Первая трудность:
Вызовите функцию parseInt в течение года и изучите, чтобы преобразовать их в целые числа, прежде чем добавлять их:
var year = 2017;
var age = prompt("Please enter your age: ");
console.log("I was born in the year of " + (year - age));
var studying = prompt("Enter the number of years you expect to study in the college: ");
console.log("You will graduate from Seneca College in the year " + (parseInt(year) + parseInt(studying)));
Вторая сложность:
В этой проблеме есть несколько ошибок. Я воздержусь от подробных примеров от каждого, так как он несколько раз разбивал ваш код, но вот краткое изложение:
Ключевое слово switch используется для проверки конкретных значений переменной. То есть выражение внутри аргумента case (...) должно быть значением, тогда как в вашем случае это утверждения if.
Ваши условия перекрываются! Обратите внимание, что если степень больше 60, она также обязательно превышает 50. Если она больше 80, она, безусловно, больше 70, 60, 50 и т.д. Это означает, что любой сорт 50 или более попадет в состояние (x> = 50) и никогда не ударит других - маловероятно, чего вы пытались достичь.
Обратите внимание, что вы пытаетесь напечатать возвращаемое значение функции грейдера, но оно никогда не возвращает значение...
Я предлагаю вам не торопиться и больше исследовать синтаксис и конструкции языка, относящегося к вашей проблеме, прежде чем отправлять вопрос - поиск и обнаружение ответов - это то, где все обучение происходит :)
Удачи!
Для первого, который может быть разрешен с помощью простого parseInt (year) + parseInt (изучение). Честно говоря, возможно, просто parseInt (изучение), поскольку я считаю, что приглашение возвращает строку.
Для второго ответ на этот вопрос лежит здесь.
Вы не можете делать условные выражения в операторах case case, как вы думаете.
Редактировать:
Поскольку вы новичок, я рекомендую посмотреть документацию по приглашению здесь.
и документацию о статусах коммутатора здесь.
Еще одна логическая проблема заключается в том, что даже если ваш оператор switch работал, он будет возвращать либо F, либо D (поскольку x является либо <50 или> = 50, никакие другие условия не будут проверяться).
Я предлагаю вам использовать структуру if/elseif (поскольку переключатель (true) не очень полезен) и реструктурируйте свою логику, чтобы выбрать подходящую букву класса:
function grader(x) {
if (x >= 80) {
return 'A';
} else if (x >= 70) {
return 'B';
} else if (x >= 60) {
return 'C';
} else if (x >= 50) {
return 'D';
} else {
return 'F';
}
}
Grade: F
а затем на следующей строке он говоритundefined
. есть идеи?