While循环退出而不是返回到循环-Javascript
试图只得到一个数字答案。内部while循环退出,而不是返回到循环中。我不知道为什么While循环退出而不是返回到循环-Javascript,javascript,loops,while-loop,Javascript,Loops,While Loop,试图只得到一个数字答案。内部while循环退出,而不是返回到循环中。我不知道为什么 var numPlays = prompt("How many games do you want to play?"); if (isNaN(numPlays) == true) { while (isNaN(numPlays) == true) { numPlays = prompt("That's not a number. Please pick a number.");
var numPlays = prompt("How many games do you want to play?");
if (isNaN(numPlays) == true) {
while (isNaN(numPlays) == true) {
numPlays = prompt("That's not a number. Please pick a number.");
}
} else if (numPlays == 0) {
while (numPlays == 0) {
numPlays = prompt("You have to at least play one game. Please pick a number.");
}
} else if (numPlays == 1) {
alert("OK! Let's play " + numPlays + " game!");
} else {
alert("OK! Let's play best of " + numPlays + "!");
}
空输入将计算为false(“确定”在while循环中) 尝试使用parseInt(),该函数返回NaN对于空字符串和非数字,请使用以下方法测试您自己的一些示例:
isNaN(parseInt(prompt("enter number")))
由于if/elseif结构;他们中只有一个能匹配。第一次运行时,它会在第1行询问数字,然后决定要通过if/elseif/else结构的哪个分支。您是否更改
numPlays
的值并不重要,稍后,已经做出了决定
这里可能需要一个递归调用
function getNumPlays(message) {
if (!message) { message = "How many games do you want to play?"; }
var numPlays = parseInt(prompt(message), 10);
if (isNaN(numPlays)) {
return getNumPlays("That's not a number.");
} else if (numPlays < 1) {
return getNumPlays("You have to at least play one game.");
}
return numPlays;
}
var numChosen = getNumPlays();
if (numPlays === 1) {
alert("OK! Lets play " + numChosen + " game!");
} else {
alert("OK! Let's play best of " + numChosen + "!");
}
函数getNumPlays(消息){
如果(!message){message=“你想玩多少游戏?”;}
var numPlays=parseInt(提示(消息),10);
如果(isNaN(numPlays)){
returngetnumplays(“那不是一个数字”);
}否则如果(numPlays<1){
return getNumPlays(“您必须至少玩一个游戏。”);
}
返程天数;
}
var numChosen=getNumPlays();
如果(numPlays==1){
警报(“好!让我们玩”+numChosen+“游戏!”);
}否则{
警惕(“好吧!让我们玩好”+numChosen+“!”);
}
注意这里的parseInt(…,10)
。这将转换为数字或NaN
。"十"重要,;它指定数字的基数。八进制数字写为“011”,有时javascript引擎不知道您想要的是八进制还是十进制
var numPlays = prompt("How many games do you want to play?");
while (isNaN(numPlays) == true || numPlays == 0) {
if(isNaN(numPlays) == true)
numPlays = prompt("That's not a number. Please pick a number.");
else
numPlays = prompt("You have to at least play one game. Please pick a number.");
}
if (numPlays == 1)
alert("OK! Let's play " + numPlays + " game!");
else
alert("OK! Let's play best of " + numPlays + "!");
我们必须有所有的嵌套循环。。。这是要求吗?我们能简化它吗?没有必要进入循环 一个简单的例子
// Wrap in a function so we can start over
function start() {
var numPlays = prompt("How many games do you want to play?");
// edited this to check for 0
if (isNaN(numPlays) || numPlays == 0) {
alert('Nope, bad answer, try again!');
return start();
} else if (numPlays == 1) {
alert('Ok, lets play 1 game!');
} else {
alert('Ok, lets play the best of ' + numPlays + 'games!');
// A little aside
// var neededToWin = (Math.floor((numPlays / 2)) + 1);
// alert('Ok, you need to win ' + neededToWin + ' out of ' + numPlays + ' games to beat me!');
}
}
从技术上讲,你会希望在“一半比赛+1”中取得最佳成绩。
所以要赢,你需要赢7/12场比赛。你只需除以就可以发现,你有两个
while
循环。每一个都只检查特定类型的错误。如果有人键入0
,则跳过第一个。第二个将报告该错误并请求另一个号码。如果然后键入“XYZ”,第二个while循环将退出,因为“XYZ”不等于零。如果while循环为false,如何返回外部If/else语句?例如,如果我首先键入0,然后键入2,如何让计算机发出警报“OK!让我们充分发挥”+numPlays+“!”isNaN
检查该值是否为NaN
(这是一个特殊的IEEE754值)。它不是用来检查它是否是一个数字。当你的函数满意它是正确的时,它可能会返回该值。由OP来选择下一步要做什么。