Вы должны рассмотреть 1 значение в вашем переключателе? - PullRequest
0 голосов
/ 23 февраля 2020

Я подаю заявку на курс программирования, и у нас есть 59 заданий, прежде чем нас примут на него. Я здесь борюсь с упражнением switch и надеюсь, что кто-нибудь может мне помочь.

Покажите мне код

Помните симулятор рулона d ie? Go вперед и преобразуйте операторы if - else if - else в оператор switch и посмотрите, как его легче читать.

var dieRoll = Math.ceil(Math.random() * 6); 
if (dieRoll === 1) {
    console.log('You roll a 1.');
} else if (dieRoll === 2) {
    console.log('You roll a 2.');
} else if (dieRoll === 3) {
    console.log('You roll a 3.');
} else if (dieRoll === 4) {
    console.log('You roll a 4.');
} else if (dieRoll === 5) {
    console.log('You roll a 5.');
} else if (dieRoll === 6) {
    console.log('You roll a 6.');
} else {
    console.log('This die only has 6 sides man...');
}

Итак, теперь я должен превратить это в заявление о переключении, и вот куда я попал.

var dieRoll = Math.ceil(Math.random() * 6);
switch (dieRoll)    {
case '1' :
case '2' :
case '3' :
case '4' :
case '5' :
case '6' :
        console.log ('You roll a ' + dieRoll + '.');  
        break;
    default:
        console.log ('This die only has 6 sides man...');
}
console.log(dieRoll);

ОШИБКА - ВЫ ДОЛЖНЫ УЧИТЫТЬ 1 ЗНАЧЕНИЕ В ВАШЕМ ПЕРЕКЛЮЧАТЕЛЕ.

Что я сделал не так?

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2020

A switch case должно быть точно то же значение, что и то, против чего переключается. С

var dieRoll = Math.ceil(Math.random() * 6);

dieRoll будет числом от 1 до 6. Он не будет строкой, поэтому

case <someString>

никогда не будет выполнено.

Вместо этого используйте цифры c:

var dieRoll = Math.ceil(Math.random() * 6);
switch (dieRoll) {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
  case 6:
    console.log('You roll a ' + dieRoll + '.');
    break;
  default:
    console.log('This die only has 6 sides man...');
}

Но switch довольно странно использовать здесь, почему бы не просто

console.log('You roll a ' + Math.ceil(Math.random() * 6) + '.')
1 голос
/ 23 февраля 2020

Используйте numbers вместо strings в ваших случаях, поэтому вместо:

case '1' :

используйте:

case 1:

И, не говоря уже, оператор switch использует строгое равенство (равное ===) для сравнения каждого случая с вашей ценностью. Так что если вы написали '0' == 0, это вернуло бы true, но в switch проверяет это следующим образом: '0' === 0, и оно вернет false, так что будьте осторожны с этим.

Надеюсь, это поможет:)

...