在JavaScript中验证来自提示符的用户输入
因此,我从Codecademy扩展了rock/paper/scissors JS游戏以验证用户输入,但当用户插入除“rock”、“paper”或“scissors”以外的内容时,我无法让程序继续要求正确的用户输入在JavaScript中验证来自提示符的用户输入,javascript,validation,input,Javascript,Validation,Input,因此,我从Codecademy扩展了rock/paper/scissors JS游戏以验证用户输入,但当用户插入除“rock”、“paper”或“scissors”以外的内容时,我无法让程序继续要求正确的用户输入 var userChoice; userChoice = prompt('Do you choose rock, paper, or scissors?'); console.log('User choice: ' + userChoice); if (userChoice !==
var userChoice;
userChoice = prompt('Do you choose rock, paper, or scissors?');
console.log('User choice: ' + userChoice);
if (userChoice !== 'rock' && userChoice !== 'paper' && userChoice !== 'scissors') {
userChoice = prompt('Select again.');
} else if (userChoice === computerChoice) {
userChoice = prompt('It\'s a tie! Pick again.');
console.log('New user choice: ' + userChoice);
}
//computer random choice
var computerChoice = Math.random();
console.log('Computer random number: ' + computerChoice);
// assign rock, paper, scissors values
if (computerChoice <= 0.33) {
computerChoice = 'rock';
} else if (computerChoice <= 0.67) {
computerChoice = 'paper';
} else {
computerChoice = 'scissors';
}
console.log('Computer choice: ' + computerChoice);
// compare user and computer choices
var compare = function(choice1, choice2) {
if (choice1 === 'rock') {
if (choice2 === 'scissors') {
return 'Rock wins!';
} else {
return 'Paper wins!';
}
} else if (choice1 === 'scissors') {
if (choice2 === 'rock') {
return 'Rock wins!';
} else {
return 'Scissors win!';
}
} else if (choice1 === 'paper') {
if (choice2 === 'rock') {
return 'Paper wins!';
} else {
return 'Scissors win!';
}
}
};
console.log(compare(userChoice, computerChoice));
var用户选择;
userChoice=prompt('您选择石头、布还是剪刀?');
log('User-choice:'+userChoice);
如果(userChoice!=='rock'&&userChoice!=='paper'&&userChoice!=='剪刀〕){
userChoice=prompt('再次选择');
}else if(userChoice==computerChoice){
userChoice=prompt('打成平局!再次拾取');
log('newuserchoice:'+userChoice);
}
//计算机随机选择
var computerChoice=Math.random();
console.log('计算机随机数:'+计算机选择);
//指定石头、布、剪刀的值
如果(computerChoice您的代码有一些问题。要解决第一个问题,您可以执行以下操作:
var userChoice;
userChoice = prompt('Do you choose rock, paper, or scissors?');
console.log('User choice: ' + userChoice);
while (userChoice !== 'rock' && userChoice !== 'paper' && userChoice !== 'scissors') {
userChoice = prompt('Select again.');
}
但是,第二部分仍然存在问题:
if (userChoice === computerChoice) {
userChoice = prompt('It\'s a tie! Pick again.');
console.log('New user choice: ' + userChoice);
}
此代码永远不会触发,因为您在进行比较后计算了computerChoice
。您应该将此代码移动到compare
功能中:
var compare = function(choice1, choice2) {
if (choice1 === choice2) {
return 'It\'s a tie!';
} else if (choice1 === 'rock') {
if (choice2 === 'scissors') {
return 'Rock wins!';
} else {
return 'Paper wins!';
}
} else if (choice1 === 'scissors') {
if (choice2 === 'rock') {
return 'Rock wins!';
} else {
return 'Scissors win!';
}
} else if (choice1 === 'paper') {
if (choice2 === 'rock') {
return 'Paper wins!';
} else {
return 'Scissors win!';
}
}
};
运行userChoice=prompt('再次选择');
后,您只需继续完成其余的代码执行。您需要的是某种循环条件,检查他们是否输入了有效的输入,并且只允许代码在有效后继续。
(提示:“循环”)
尝试以下方法:
//to do
// after it is a tie, making the same choice doesn't do anything?
// keep on prompting if incorrect input again
// take user input
var userChoice;
userChoice = prompt('Do you choose rock, paper, or scissors?');
console.log('User choice: ' + userChoice);
var valid = false;
//computer random choice
var computerChoice = Math.random();
console.log('Computer random number: ' + computerChoice);
// assign rock, paper, scissors values
if (computerChoice <= 0.33) {
computerChoice = 'rock';
} else if (computerChoice <= 0.67) {
computerChoice = 'paper';
} else {
computerChoice = 'scissors';
}
while (!valid) {
if (userChoice !== 'rock' && userChoice !== 'paper' && userChoice !== 'scissors') {
userChoice = prompt('Select again.');
} else if (userChoice === computerChoice) {
userChoice = prompt('It\'s a tie! Pick again.');
//computer random choice
var computerChoice = Math.random();
console.log('Computer random number: ' + computerChoice);
// assign rock, paper, scissors values
if (computerChoice <= 0.33) {
computerChoice = 'rock';
} else if (computerChoice <= 0.67) {
computerChoice = 'paper';
} else {
computerChoice = 'scissors';
}
console.log('New user choice: ' + userChoice);
} else {
valid = true;
}
}
console.log('Computer choice: ' + computerChoice);
// compare user and computer choices
var compare = function(choice1, choice2) {
if (choice1 === 'rock') {
if (choice2 === 'scissors') {
return 'Rock wins!';
} else {
return 'Paper wins!';
}
} else if (choice1 === 'scissors') {
if (choice2 === 'rock') {
return 'Rock wins!';
} else {
return 'Scissors win!';
}
} else if (choice1 === 'paper') {
if (choice2 === 'rock') {
return 'Paper wins!';
} else {
return 'Scissors win!';
}
}
};
console.log(compare(userChoice, computerChoice));
//要做的事
//打成平局后,做出同样的选择没有任何作用?
//如果再次输入错误,则继续提示
//接受用户输入
var用户选择;
userChoice=prompt('您选择石头、布还是剪刀?');
log('User-choice:'+userChoice);
var-valid=false;
//计算机随机选择
var computerChoice=Math.random();
console.log('计算机随机数:'+计算机选择);
//指定石头、布、剪刀的值
如果(计算机选择)
它不工作,控制台日志未定义
问题是,函数compare()
中缺少return
语句:
var compare=函数(选项1,选项2){
如果{
...
}
return“oops!!”;//非常感谢!代码中的while
循环缺少一个右括号,最后一个else if
比较有拼写错误。修复了这个问题后,我发现while
循环中的领带检查没有正常工作(不会再次提示用户输入).我们遗漏了什么?它实际上遗漏了valid=true;
语句以在的同时打破循环,从我所能看到的情况来看,对tie的检查仍然与以前一样:/…这是一个测试,您通过了…我确实忘记了valid=true语句。您对tie condi的实现tion正在我的终端上工作,提示会一直给出,直到用户输入一个不是平局的有效条目,如果不是,您希望的输出是什么?缺少最终的console.log(比较(userChoice,computerChoice))
line.如果你还有问题,让我知道啊,我明白你的意思了,问题是电脑的选择应该在用户输入他们的选择之前确定。每次比赛结果是平局,玩家和电脑都应该选择不同的答案(就像实际的石头剪刀一样)。请查看我的最新编辑,并注意,您可以将确定计算机答案的协议抽象为一个单独的函数,因为您多次调用它。非常感谢eddy!在compare
函数中添加对tie的检查这样做不会再次提示用户输入,它只会记录它是与conso的tie另外,我运行了几次程序,注意到只有而循环在适当的位置,我的代码中的领带检查确实运行了。哦,有趣…很高兴你让它工作了:)
var compare = function(choice1, choice2) {
if {
...
}
return "oops !!"; //<-- missing
};