Мне нужна помощь в "отладке" синтаксиса оператора 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';
}
Пять проблем
- Вам не нужны брекеты по всему
console.log
заявление. - Вам нужны кавычки вокруг ваших значений, камня, бумаги и ножниц (или заранее определите их как переменные).
- Логично и в JavaScript требуется два амперсанда
&&
, (Один амперсанд является побитовым оператором.) - Вы должны включить обе стороны неравенства после логического и. Ты не можешь сказать
& < 0.66
потому что JavaScript не имеет понятия, что вы имеете в виду, но нужно будет написать&& computerChoice < 0.66
, - Математическая проблема состоит в том, что вы не совсем правильно делите интервал от 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'
соответственно.