Мне нужна помощь в "отладке" синтаксиса оператора If/Else if/Else

Я создаю игру "Рок, бумага, ножницы" на "Codecademy", поэтому для этого я использую простой JavaScript. Для этого простого кода есть четыре вещи

  • Если computerChoice находится в диапазоне от 0 до 0,33, установите значение computerChoice равным "rock".
  • Если computerChoice находится в диапазоне от 0,34 до 0,66, установите значение computerChoice равным "paper".
  • Если computerChoice находится между 0,67 и 1, сделайте computerChoice равным "ножницам".
  • Должен быть выражением If/Else If/Else

Поэтому, в основном, мне нужно изменить значение функции "computerChoice" на основе значения функции "computerChoice".

    var userChoice = prompt("Do you choose rock, paper or scissors?");

var computerChoice = Math.random(); {
    console.log(computerChoice);
}

if (computerChoice >= 0 & <= 0.33) {
    computerChoice = rock;
}

else if (computerChoice >= 0.34 & < 0.66) {
    computerChoice = paper;
}
else {
    computerChoice = scissors;
}

4 ответа

if (computerChoice < 0.33) {
  computerChoice = "rock";  
} else if (computerChoice <= 0.66){
  computerChoice = "paper";    
} else {
  computerChoice = "scissors";
} 

В вашем коде есть следующие проблемы.

1) Там должно быть && вместо &,

2) Это условие

(computerChoice >= 0 & <= 0.33)

должно быть

(computerChoice >= 0 && computerChoice <= 0.33)

3) rock, scissors а также paper должна быть строка, просто заключите их в кавычки.

4) В строках ниже

var computerChoice = Math.random(); {
    console.log(computerChoice);
}

нет необходимости {} это должно быть написано как

var computerChoice = Math.random(); 
console.log(computerChoice);

Объединяя все в одном

var userChoice = prompt("Do you choose rock, paper or scissors?");

var computerChoice = Math.random();
console.log(computerChoice);


if (computerChoice >= 0 && computerChoice <= 0.33) {
    computerChoice = 'rock';
} else if (computerChoice >= 0.34 && computerChoice < 0.66) {
    computerChoice = 'paper';
} else {
    computerChoice = 'scissors';
}

Пять проблем

  1. Вам не нужны брекеты по всему console.log заявление.
  2. Вам нужны кавычки вокруг ваших значений, камня, бумаги и ножниц (или заранее определите их как переменные).
  3. Логично и в JavaScript требуется два амперсанда &&, (Один амперсанд является побитовым оператором.)
  4. Вы должны включить обе стороны неравенства после логического и. Ты не можешь сказать & < 0.66 потому что JavaScript не имеет понятия, что вы имеете в виду, но нужно будет написать && computerChoice < 0.66,
  5. Математическая проблема состоит в том, что вы не совсем правильно делите интервал от 0 до 1 на три равных сегмента (и полностью не учитываете часть между.33 и.34).

Плюс одна оптимизация

  • Хотя 4. верно выше, вам даже не нужен логический && операция вообще, потому что к тому времени вы уже знаете, что код в else if Утверждение, что первый if Условное не верно, и его не нужно проверять снова.

Там нет переменной, которую вы определили называется rock, так что вы можете определить один или просто использовать строку "rock", И то же самое для "paper" а также "scissors",

Предлагаемая редакция

var userChoice = prompt("Do you choose rock, paper or scissors?");

var computerChoice = Math.random();
console.log(computerChoice);


if (computerChoice < 1/3) {
    computerChoice = "rock";
}

else if (computerChoice < 2/3) {
    computerChoice = "paper";
}

else {
    computerChoice = "scissors";
}

Ваш синтаксис нуждается в некотором исправлении.

Во-первых, вам не нужны эти фигурные скобки вокруг log() заявление.

Во-вторых, вам нужна переменная для проверки во второй части каждого оператора if:

if (computerChoice >= 0 && computerChoice <= 0.33) {
    computerChoice = rock;
} else if (computerChoice >= 0.34 && computerChoice < 0.66) {
    computerChoice = paper;
} else {
    computerChoice = scissors;
}

Обратите внимание computerChoice сравнивается во второй половине каждого логического выражения.

Кроме того, вы не определили переменные rock, paper, а также scissors, Вместо этого вы можете попробовать использовать строки 'rock', 'paper', а также 'scissors'соответственно.

Другие вопросы по тегам