gpt4 book ai didi

javascript - 嵌套在 while 循环内的开关以允许用户再次玩 - Javascript

转载 作者:行者123 更新时间:2023-11-28 17:46:31 26 4
gpt4 key购买 nike

该代码的目的是让用户可以根据需要多次玩游戏。我一直陷入无限循环,我不知道为什么。附注我需要坚持使用 switch 语句。

    var color1 = prompt('Pick a color');

while (true){

switch (color1) {
case (color1 = 'blue'):
document.write("nope");
break;
case (color1 = 'yellow'):
document.write("nope");
break;
case (color1 = 'white'):
document.write("nope");
break;
case (color1 = 'gray'):
document.write("nope");
break;
case (color1 = 'green'):
document.write("yes");
break;
case (color1 = 'pink'):
document.write("nope");
break;
case(color1 = 'purple'):
document.write("nope");
break;
case (color1 = 'orange'):
document.write("nope");
break;
case (color1 = 'green'):
document.write("nope");
break;
case (color1 = 'magenta'):
document.write("nope");
break;
case (color1 = 'red'):
document.write("nope");
break;
}

if(color1 = false)
alert('Thanks')

}

最佳答案

您的代码中存在几个问题:

  • =运算符进行赋值,您需要 =====进行比较。

  • 您没有使用 case正确地在您的 switch 内:您只需输入要匹配的值 color1 ,不要尝试将其视为 if 进行比较健康)状况。所以你需要这样的东西:

    switch (color1) {
    case 'red':
    document.write("nope");
    break;
  • 在不同的 case 中列出一大堆不同的错误颜色是没有意义的。 s,因为即使除了用户可能输入不在列表中的值这一事实之外,实际上逻辑应该是“它是绿色的吗?”是/否。安if声明比 switch 更有意义,但既然你说过你必须使用 switch那么你应该有一个case以获得正确答案,然后使用 default捕获所有其他值:

    switch (color1) {
    case 'green':
    document.write("yes");
    break;
    default:
    document.write("nope");
    break;
    }

    或者在假设的情况下,您合法地需要列出几个值,但让它们做同样的事情,您应该使用像这样的“失败”:

    switch (color1) {
    case 'blue':
    case 'yellow':
    case 'white':
    document.write("nope");
    break;
    case 'green':
    document.write("yes");
    break;
    }
  • 决赛if需要breakwhile当条件为真时循环 - 目前它所做的只是显示警报,因此是无限循环。

  • 测试 if (color1 === false) (修复运算符后)没有意义,因为 color1永远不会false :如果用户单击 prompt() 上的取消按钮那么该值将是 null ,因此进行测试。您还可以测试空字符串。除非您可以将该逻辑移至 case而不是 if switch之后陈述。而不是while(true) ,使用while(!finished)并添加 finished您设置为 true 的变量当用户单击“取消”按钮时。

  • prompt()需要位于循环内部,否则只会在循环开始之前提示用户一次,并且循环将不断重复测试相同的值。

  • 使用 document.write()这不是一个好的计划,但我宣布这个问题超出了这个问题的范围。同时,你至少应该输出 <p>元素或其他东西,以便每个“否”和"is"出现在自己的行上。

将所有内容放在一起:

var finished = false;

while (!finished) {
var color1 = prompt('Pick a color');

switch (color1) {
case null:
case '':
alert('Thanks');
finished = true;
break;
case 'green':
document.write("<p>yes</p>");
break;
default:
document.write("<p>nope</p>");
break;
}
}

关于javascript - 嵌套在 while 循环内的开关以允许用户再次玩 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46616167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com