Promp Javascript继续显示



我遇到了一个错误,我不知道代码有什么问题,但即使我输入3在提示框中,浏览器不断要求输入,而不会提示消息。一更大的问题是,当我在提示框中输入0时,它一直要求输入而没有发出警报编号1-6。你们能告诉我代码有什么问题吗

var location1=3, location2=4, location3=5;
var guess;
var hit=0;
var guesses=0;
var isSunk=false;
while(isSunk==false){
guess=prompt("User input: ");
if(guess>0 || guess<=6){
if(guess!==location1 || guess!==location2 || guess!==location3){
hit=hit+1;
guesses=guesses+1;
}
if (guess==location1 || guess==location2 || guess==location3){
isSunk=true;
hit=hit+1;
guesses=guesses+1;

}
}
else{
alert("Number 1 - 6");    
}
}
alert('You winnGuess is: '+guesses+' Hit is: '+hit);   

您正在为if语句使用OR条件。只要任何条件为true,就会运行OR语句。这意味着,由于您的输入始终为1值。您的第一个if语句将始终像输入3一样运行,那么位置2和位置3都是正确的,因为输入分别不等于4或5。在你的猜测检查中,你也使用了OR,所以同样的问题也会发生。

另一个注意事项是,通过使用两个if语句,两个语句都可以运行。因此,最好使用if-else-like so

var location1=3, location2=4, location3=5;
var guess;
var hit=0;
var guesses=0;
var isSunk=false;
while(isSunk==false){
guess=prompt("User input: ");
if(guess>0 && guess<=6){
if (guess==location1 || guess==location2 || guess==location3){
isSunk=true;
hit=hit+1;
guesses=guesses+1;

}
else {
hit=hit+1;
guesses=guesses+1;
}
}
else{
alert("Number 1 - 6");    
}
}
alert('You winnGuess is: '+guesses+' Hit is: '+hit);   

您的代码中有几个问题。

  1. 如果(猜测>0||猜测<=6(=>如果(猜测>0&猜测<6(
  2. 您可以使用else而不是另一个长if语句
  3. 命中总是和代码中的猜测相同。为什么

这是的更新

var location1=3, location2=4, location3=5;
var guess;
var hit=0;
var guesses=0;
var isSunk=false;
while(!isSunk){
guess=Number(prompt("User input: "));
if(guess>0 && guess<=6){
if (guess===location1 || guess===location2 || guess===location3){
isSunk=true;
}
hit=hit+1;
guesses=guesses+1;
}
else{
alert("Number 1 - 6");    
}
}
alert('You winnGuess is: '+guesses+' Hit is: '+hit);

问题是您使用的是短路OR而不是短路AND

当前,您的代码将允许输入任何数字,因为您允许输入>0或<=6.

此外,如果不是3、不是4或不是5,那么你的猜测就是失误。每个数字都符合此标准。

将代码更改为

while(isSunk==false){
guess=prompt("User input: ");
if(guess>0 && guess<=6){
if(guess!==location1 && guess!==location2 && guess!==location3){
hit=hit+1;
guesses=guesses+1;
}
if (guess==location1 || guess==location2 || guess==location3){
isSunk=true;
hit=hit+1;
guesses=guesses+1;

}
}
else{
alert("Number 1 - 6");    
}
}

最新更新