我正在尝试此JavaScript代码,这是 Codeacademy 网站中的练习。 但问题在于它显示了" 论文"在控制台。它应该显示" 剪刀"? 问题是什么?我做错了吗?
以下是JavaScript:
var userChoice= prompt("Do you choose rock, paper or scissors");
var computerChoice=0.35;
console.log(computerChoice);
if(0<computerChoice<0.33){
computerChoice="rock";
}
else if(0.34<computerChoice<0.66){
computerChoice="scissors";
}
else{
computerChoice="paper";
}
console.log(computerChoice);
答案 0 :(得分:3)
你需要分解小于,而不是分成两部分。
if(computerChoice>0 && computerChoice<0.33){
同样的事情需要对另一方做。
答案 1 :(得分:2)
你不能写像
这样的表达式if(0 < computerChoice < 0.33)
在Javascript中。你必须将它分成两个表达式:
if(0 < computerChoice && computerChoice < 0.33)
答案 2 :(得分:2)
x < y < z
评估为
(x < y) < z
在你的情况下,
0 < computerChoice < 0.33
>> (0 < computerChoice) < 0.33
>> true < 0.33
>> false //always
* Side-Note:同样适用于相等运算符。 x == y == z
答案 3 :(得分:2)
之所以这不适合你,是因为TRUE不小于0.66。表达式将像这样计算
(0.36 < computerChoice ) => true if (computerchoice = 0.35 )
现在下一部分是(真&lt; 0.66),这是假的。因此表达式评估为假。 Approach: 0.34<computerChoice==computerChoice<0.66
快乐编码:)
答案 4 :(得分:0)
这是错误的语法。 a < b < c
不是有效的JavaScript。你必须在块中创建两个条件。
if ( 0 < computerChoice < 0.33)
应该是
if (computerChoice > 0 && computerChoice < 0.33)
查看此代码段。
var cpuChoice = document.getElementById("cpu-selection");
var userChoice = prompt("Do you choose rock, paper or scissors");
var computerChoice = 0.35;
//console.log(computerChoice);
if (computerChoice > 0 && computerChoice < 0.33) {
computerChoice = "rock";
}
else if (computerChoice > 0.34 && computerChoice < 0.66) {
computerChoice = "scissors";
}
else {
computerChoice = "paper";
}
cpuChoice.innerHTML = computerChoice;
<p id="cpu-selection"></p>
答案 5 :(得分:0)
我认为基于范围的不等式在JavaScript中是非法的,左右不等。因为JavaScript是弱类型的,我的猜测是它会评估一个不等式并得到一个真值或假值,然后将其转换为数字。
我的猜测是0&lt;计算机选择是真的,如果大于,则将其转换为1。 33,对于第二个如果.34&lt;计算机选择是真实的并且转换为1> .66所以这是假的,所以评估了else语句
尝试0 < computerChoice&& computerChoice < .33
等等。
编辑:我回到了计算机并且能够测试这个,我在谷歌浏览器中体验了这些结果
true < 1 // false
true > 1 // false
true == 1 // true
(注意:经验可能有所不同,我不会将此行为称为来自通常更强类型的语言,但它可能在JavaScript中被定义为此行为)
答案 6 :(得分:0)
因为您使用了这个:
if(computerChoice < 0.33){ ... }
您的下一个陈述是else if
,您实际上可以从第二个0.34<
中移除if
,因为它已经超过了0.34,因为之前的if
是假的。
if(computerChoice < 0.33){
computerChoice = "rock";
}else if(computerChoice < 0.66){
computerChoice = "scissors";
}else{
computerChoice = "paper";
}
您也不需要检查computerChoice是否小于0,因为Math.random总是返回0到1之间的值。