switch语句有不同的情况,但默认情况下,系统会提示用户输入新值。
我希望根据不同情况检查新值。如果大小写匹配,则执行相应的代码。但否则,它将进入默认状态并重新提示。
如何编写代码以重新检查switch语句中的表达式?
var anyLetter;
anyLetter = prompt("Enter one of the following letters (b, o, or h): ");
switch(anyLetter)
{
case "b":
case "B":
//code if user enters b or B
break;
case "o":
case "O":
//code
break;
case "h":
case "H":
//code
break;
default:
var anyLetterAgain;
anyLetterAgain = prompt("Enter one of the following letters (b, o, or h): ");
}
我希望用户为anyLetterAgain输入的内容通过switch语句运行,并继续直到输入b,o或h。请帮忙!感谢
答案 0 :(得分:1)
使用while循环可能更合适。例如:
var good = false
while (!good) {
var l = prompt("Enter one of the following letters (b, o, or h): ");
if (l == 'o' || l == 'O' || l == 'b' || l == 'B' || l == 'h' || l == 'H') {
good = true;
MyOtherFunction(l); //handle the user input here
}
}

只是一个想法...
答案 1 :(得分:0)
只需调用切换块代码所在的函数default
。
例如:
function askForLetter() {
var anyLetter;
anyLetter = prompt("Enter one of the following letters (b, o, or h): ");
switch(anyLetter){
case "b":
case "B":
//code if user enters b or B
break;
case "o":
case "O":
//code
break;
case "h":
case "H":
//code
break;
default:
askForLetter();
}
}
答案 2 :(得分:0)
虽然上面的所有答案都是正确的,但我需要指出当你需要包含新选项时需要对条件进行额外的修改,而第二个将很难在这种状态下检索字母本身,这很容易解决,但是由于它的递归性质,它可能会在某些极端情况下导致堆栈溢出(请注意具有讽刺意味)。 这是我的代码版本:
var anyLetter = '';
while (anyLetter == '')
{
anyLetter = getMyLetter();
}
console.log("MyLetter:", anyLetter);
function getMyLetter()
{
var letter = prompt("Enter one of the following letters (b, o, or h): ");
switch(letter)
{
case "b":
case "B":
{
//code if user enters b or B
break;
}
case "o":
case "O":
{
//code
break;
}
case "h":
case "H":
{
//code
break;
}
default:
{
letter = '';
}
}
return letter;
}