我有一个作业问题,必须创建一个变量作为常量并将密码存储在该变量中。
提示用户输入密码,并让他们知道他们有3次猜测才能正确输入密码。
如果密码正确,请告知用户,并且不会再出现任何提示。
如果密码不正确,您应提醒用户密码不正确,并重复多少次尝试。
第3次猜测之后,应该提醒用户他们已经超出了猜测范围,并且不再出现提示。
我似乎无法弄清的唯一部分是如何说还剩下多少次尝试,然后重播消息。
我尝试过使用for循环,但它给出了undefined
。
const x = window.prompt("Enter a password")
var y = window.prompt("Reenter your password")
var i = 0
var message = []
message = " "
if (x === y) {
window.alert("You got it right!")
} else {
window.alert("Try again")
for (i = 4; i < 4; i--) {
message[0] += "You have " + i + "tries left"
message[1] += "You have " + i + "tries left"
message[2] += "You have " + i + "tries left"
message[3] += "You are out of tries"
}
}
答案 0 :(得分:2)
我不喜欢完成其他任务,但是,我希望这可以帮助您了解JavaScript的工作原理。
首先,您需要将for
循环移到顶部(在初始化x
作为密码之后),以便将所有代码都包含在其中。每次操作(显示提示):
const x = window.prompt('Enter a password')
for (i = 3; i > 0; i--) {
...
}
请注意我如何将i = 4
更改为i = 3
,因为您想在for
循环控件的最后一段进行三步尝试并递减,因为您想从{{1 }}到3
。
现在,您还需要更改显示部分。您可以摆脱0
列表,因为它不是必需的:
message
我使用了 ...
} else {
if (i > 1) window.alert(`You have ${i} tries left.`)
else window.alert(`You are out of tries.`)
}
语句来确定是否还有尝试。如果为if
,则没有尝试,因为这是最后一次尝试。
另外,我正在使用模板文字来显示尝试次数。 Learn more
可能的解决方案 看起来像这样:
i == 1
答案 1 :(得分:1)
要求用户重新输入密码的代码必须在循环中。
您也有错误的循环条件。 i < 4
永远不会为真,因为您初始化了i = 4
,因此循环立即结束。
您设置了变量message
,但切勿将其用于任何东西。确实不需要4种不同的变量设置,您可以通过从限制中减去当前尝试次数来简单地计算剩余的尝试次数。
const x = window.prompt("Enter a password");
const maxtries = 3;
for (var i = 0; i < maxtries; i++) {
var y = window.prompt("Reenter your password")
if (x === y) {
window.alert("You got it right!")
} else {
if (i < maxtries-1) {
window.alert(`You have ${maxtries-1-i} tries left, try again`);
} else {
window.alert("You're out of tries");
}
}
}
答案 2 :(得分:0)
// enter original password
const saved = window.prompt('Enter password: ');
// start loop for 3 attempts
for (let x = 2; x >= 0; x--) {
// prompt for password attempt
const attempt = window.prompt('Reenter password: ');
// produce failed attempt message
const failed = (x > 0) ? x + ' tries left' : 'Failed to login...';
// display success/failure message
window.alert((attempt === saved) ? 'Success!' : failed);
// exit loop if passwords match
x = (attempt === saved) ? 0 : x;
}