javascript 如何在密码猜测循环中给予“No more trints left”

rjjhvcjd  于 2022-12-17  发布在  Java
关注(0)|答案(6)|浏览(120)

我刚开始学习JS,就被困在这里了。我需要做的是:

  • 如果您输入的密码不正确,则会收到“重试”消息。
  • 如果您没有输入密码3次,您会得到消息“没有更多的尝试离开”。
  • 如果您输入正确的密码,您会收到“您可以输入”的消息。

下面是我的代码:

for ( let i = 3; i > 0; i-- ) {
  let password = prompt("What is the password?")  
  if ( password.toUpperCase() !== "BINGO" ) {
    alert("Try again")
  } else if ( i = 0 ) {
    alert("No more tries left")
  } else {
    alert("You may enter")
  }
}

我无法让它正常工作,因为没有显示消息“No more trints left”。我知道( i = 0 )是错误的,但我不知道如何让它工作。

nszi6y05

nszi6y051#

首先,当你检查i == 0时,确保你没有使用赋值运算符,你现在使用的是i = 0,它并不检查两个值是否相等,而是把左赋值给右。
第二,你的for循环被关闭了一点。它永远不会得到0,因为你要求它循环while i > 0,而不是i >= 0。但是等一下--如果你使用i >= 0,它会循环四次。这也不是你想要的。我们妥协一下,循环三次,但是检查i == 1而不是0。
下面是我的更正代码的工作:

// loop three times
for ( let i = 3; i > 0; i-- ) {
  let password = prompt("What is the password?") 
  // if it's the correct answer then alert and break the loop
  if ( password.toUpperCase() == "BINGO" ) {
    alert("You may enter")
    break
  // if it's not, and the tries has elapsed, then alert and break the loop
  } else if ( i == 1 ) {
    alert("No more tries left")
    break
  // if it's not but the tries have not elapsed, then loop again
  } else {
    alert("Try again")
  }
}
zdwk9cvp

zdwk9cvp2#

试试这个。

for ( let i = 3; i >= 0; i-- ) {
    if (i===0){
        alert("No more tries left");
        break;
    }
    let password = prompt("What is the password?")  
    if ( password.toUpperCase() !== "BINGO" ) {
    alert("Try again")
    } else {
    alert("You may enter")
    }
  }

给予用户3次输入密码的机会,但循环4次,并检查循环是否运行第4次(i === 0)。如果提示No more tries left并中断循环。

eni9jsuy

eni9jsuy3#

您正在使用赋值运算符而不是比较运算符。请更改此设置:

else if ( i = 0 ) {
  alert("No more tries left")
  }

对此:

else if ( i == 0 ) {
  alert("No more tries left")
}
oyjwcjzk

oyjwcjzk4#

试试这个。它会循环运行,直到他们正确输入密码或尝试的次数是3。
在循环之后,您可以检查valid是true还是false。

let valid = false;
let attempts = 0;

do
{
    const password = prompt('What is the password');

    valid = password.toUpperCase() === 'BINGO';

    if (!valid && attempts < 2)
    {
        alert('Try again');
    }

    attempts++;
} while (!valid && attempts < 3)

if (valid)
{
    alert('You may enter');
} else
{
    alert('No more tries left');
}
sxpgvts3

sxpgvts35#

1.你要求用户在每次循环中输入密码,所以,显示“你没有剩余的尝试次数了”在这里是没有用的,因为如果值大于3,循环中的指令就不会被执行。
1.不要使用JavaScript进行身份验证。它是一种客户端编程语言,任何知道如何工作的人都可以提取密码。相反,使用后端语言进行身份验证,如PHP、Node.js
1.但是,如果您只是出于学习的目的而不是为了实现它,那么下面的代码将对您有所帮助

for (let i=0; i<3; i++){
        
        let password = prompt("what is the password: ");
        if (password.toUpperCase() != "BINGO"){
            alert("Try Again!");
        }else{
            alert("You may enter!");
            i=3;
        }
    }

1.有几种方法可以做到“没有更多的尝试离开”是,其中一个简单和基本的是:

<input type="button" value="Enter Code" onclick="checkMe()">
<script>
    let i=0;
    function checkMe(){
      if (i<3){
      
        let password = prompt("Enter password!");
        if (password.toUpperCase() != "BINGO"){
              alert("Try Again! Attempt "+ (++i));
        }else{
            alert("You may enter!");
            i=3;
        }

      }else alert("No more attempts left");
    }
</script>

1.上面的代码可以使用输入字段来实现,正如我所说,有几种方法。希望对你有所帮助!

ql3eal8s

ql3eal8s6#

你的代码很好,问题是它没有落入if条件(i == 0),因为循环只在i > 0时运行,只需要这样调整:

for ( let i = 3; i > 0; i-- ) {
  let password = prompt("What is the password?")  
  if (password.toUpperCase() !== "BINGO" && i > 1 ) {
    alert("Try again")
  } else if (i == 1 && password.toUpperCase() !== "BINGO") {
    alert("No more tries left")
  } else {
    alert("You may enter")
    i = 0
  }
}

相关问题