如何正确使用if else和else if
How to properly use if else and else if
我正在使用 codecademy 课程,我正在学习如何使用随机数制作剪刀石头布游戏。它说我已经完成了 "good job",但每次我尝试正确地让每个人正确地显示它们各自的条件时,它都会搞砸。
请发表评论指出错误并在将来避免它的提示。
条件
- 0 到 .33 = 岩石
-.34 到 .66 = 纸
-.67 比 1 = 剪刀
JS代码
var userChoice = prompt("Rock, Paper, or Scissors?");
var computerChoice = Math.random();
console.log(computerChoice);
if (computerChoice <= 0.33) {
console.log("Rock");
}
else if (0.34 < computerChoice < 0.66) {
console.log("Paper");
}
else {
console.log("Scissors");
}
也许问题出在这一行:
else if (0.34 < computerChoice < 0.66) {
试试这个:
else if (0.35 < computerChoice && computerChoice < 0.67) {
最好读一本编程书籍,或者阅读一些关于循环的在线教程
无论如何使用下面的代码它会解决你的问题
var userChoice = prompt("Rock, Paper, or Scissors?");
var computerChoice = Math.random();
console.log(computerChoice);
if (computerChoice <= 0.33)
{
console.log("Rock");
}
else if(computerChoice>=0.34&&computerChoice<=0.66)
{
console.log("Paper");
}
else if(computerChoice>=0.67&&computerChoice<=1)
{
console.log("Scissors");
}
else
{
console.log("Invalid input");
}
if(computerChoice>=0&&computerChoice<=0.33)
{
console.log("Rock");
}
else if(computerChoice>=0.34&&computerChoice<=0.66)
{
console.log("Paper");
}
else if(computerChoice>=0.67&&computerChoice<=1)
{
console.log("Scissors");
}
您好,我假设您验证的随机数范围为 0 到 1。
每个人似乎都会犯的错误是您可以有 0.331,并且计算结果为 "Scissors"。比较合理的逻辑是:
var result = (computerChoice >= 0.67 ? "Scissors" : (computerChoice >= 0.34 ? "Paper" : "Rock"));
console.log(result);
我不想成为第十个回答者,但给出的所有答案都很糟糕。你懂的
else if (0.34 < computerChoice < 0.66) {
是错误的语法,对吧? OK,那么我们也来解决偏差问题:0.33 小于三分之一,0.33 和 0.34 之间的所有数字都默认为剪刀。如果你想要均匀分布,最简单的方法是制作一个提前退出的函数:
function computerChoice() {
var v = Math.random();
if (v < (1.0 / 3.0)) return "rock";
if (v < (2.0 / 3.0)) return "paper";
return "scissors";
}
这是双精度浮点所允许的最佳状态,对于大多数用途来说已经足够了。
我正在使用 codecademy 课程,我正在学习如何使用随机数制作剪刀石头布游戏。它说我已经完成了 "good job",但每次我尝试正确地让每个人正确地显示它们各自的条件时,它都会搞砸。
请发表评论指出错误并在将来避免它的提示。
条件 - 0 到 .33 = 岩石 -.34 到 .66 = 纸 -.67 比 1 = 剪刀
JS代码
var userChoice = prompt("Rock, Paper, or Scissors?");
var computerChoice = Math.random();
console.log(computerChoice);
if (computerChoice <= 0.33) {
console.log("Rock");
}
else if (0.34 < computerChoice < 0.66) {
console.log("Paper");
}
else {
console.log("Scissors");
}
也许问题出在这一行:
else if (0.34 < computerChoice < 0.66) {
试试这个:
else if (0.35 < computerChoice && computerChoice < 0.67) {
最好读一本编程书籍,或者阅读一些关于循环的在线教程 无论如何使用下面的代码它会解决你的问题
var userChoice = prompt("Rock, Paper, or Scissors?");
var computerChoice = Math.random();
console.log(computerChoice);
if (computerChoice <= 0.33)
{
console.log("Rock");
}
else if(computerChoice>=0.34&&computerChoice<=0.66)
{
console.log("Paper");
}
else if(computerChoice>=0.67&&computerChoice<=1)
{
console.log("Scissors");
}
else
{
console.log("Invalid input");
}
if(computerChoice>=0&&computerChoice<=0.33)
{
console.log("Rock");
}
else if(computerChoice>=0.34&&computerChoice<=0.66)
{
console.log("Paper");
}
else if(computerChoice>=0.67&&computerChoice<=1)
{
console.log("Scissors");
}
您好,我假设您验证的随机数范围为 0 到 1。
每个人似乎都会犯的错误是您可以有 0.331,并且计算结果为 "Scissors"。比较合理的逻辑是:
var result = (computerChoice >= 0.67 ? "Scissors" : (computerChoice >= 0.34 ? "Paper" : "Rock"));
console.log(result);
我不想成为第十个回答者,但给出的所有答案都很糟糕。你懂的
else if (0.34 < computerChoice < 0.66) {
是错误的语法,对吧? OK,那么我们也来解决偏差问题:0.33 小于三分之一,0.33 和 0.34 之间的所有数字都默认为剪刀。如果你想要均匀分布,最简单的方法是制作一个提前退出的函数:
function computerChoice() {
var v = Math.random();
if (v < (1.0 / 3.0)) return "rock";
if (v < (2.0 / 3.0)) return "paper";
return "scissors";
}
这是双精度浮点所允许的最佳状态,对于大多数用途来说已经足够了。