当标准的答案不可接受时,如何为提示创建循环?
How can I create a loop for a prompt, when the answer is unacceptable for a criteria?
所以我一直在研究密码生成器,除了两件事,我还让它工作。密码长度必须在 8-128 个字符之间。我有一个提示,询问用户他们希望密码有多长,然后是一些关于包括符号、大写字母、小写字母和数字的其他提示。但是,当用户回答低于 8 或高于 128 的任何内容时,我想提醒说“密码必须至少有 8 个字符长且短于 128”,然后循环回到提示,再次询问他们想要密码多长时间成为.
我一辈子都想不出该怎么做。对我来说明显的解决方案是 while 循环,但是我没有构建这些的经验。
我还希望在“确认”系统结束之前至少选择一种字符类型,并循环回到大写、小写、符号和数字的确认开头,以便用户必须至少选择一种.
如有任何帮助,我们将不胜感激。
谢谢!
这里是密码长度的代码
var passLength;
while (passLength >= 129 || passLength <= 7) {
passLength = parseInt(prompt('How many charcters would you like? (8-128)'))
if (passLength <= 128 || passLength >= 8) {
break;
}
alert("Password length must be 8 to 128 characters long!");
}
这里是单独字符的代码,我需要至少选择其中一个。
var chosenCharactersArr = []
var passwordstring = ''
if (confirm('would you like Capital letters?')) {
chosenCharactersArr.push(upperCase)
}
if (confirm('would you like to include lowercase letters?')) {
chosenCharactersArr.push(lowerCase)
}
if (confirm('would you like to include numbers?')) {
chosenCharactersArr.push(numbers)
}
if (confirm('would you like to include symbols?')) {
chosenCharactersArr.push(symbols)
}
您的长度检查有误。在这种情况下你不能使用 ||
因为你想检查下限和上限是否都有效,因此 &&
.
对于问题循环,您可以使用 while (true)
循环,一旦您完成问题即配置,您就可以 break
。
我使用一个对象来存储具有默认值的配置值。您也可以使用数组。但是,您必须以某种方式管理索引。
const TYPE_NUMBER = 0;
const TYPE_BOOLEAN = 1;
const TYPE_STRING = 2;
const config = {
len: 8,
upc: false,
loc: false,
num: false,
sym: false
};
while (true) {
const len = ask('How many charcters would you like? (8-128)', TYPE_NUMBER);
if (len <= 128 && len >= 8) {
config.len = len; break;
} else {
alert("Password must be 8 to 128 characters long!");
}
}
const upc = ask('Would you like to use capital letters?', TYPE_BOOLEAN);
if (upc) { config.upc = upc; }
// ... repeat the same for the other questions ...
console.log(config);
function ask(msg, type) {
let result;
if (type === TYPE_BOOLEAN) {
result = confirm(msg);
} else if (type === TYPE_NUMBER) {
result = parseInt(prompt(msg));
} else if (type === TYPE_STRING) {
result = prompt(msg);
} else {
result = "";
}
return result;
}
所以我一直在研究密码生成器,除了两件事,我还让它工作。密码长度必须在 8-128 个字符之间。我有一个提示,询问用户他们希望密码有多长,然后是一些关于包括符号、大写字母、小写字母和数字的其他提示。但是,当用户回答低于 8 或高于 128 的任何内容时,我想提醒说“密码必须至少有 8 个字符长且短于 128”,然后循环回到提示,再次询问他们想要密码多长时间成为.
我一辈子都想不出该怎么做。对我来说明显的解决方案是 while 循环,但是我没有构建这些的经验。
我还希望在“确认”系统结束之前至少选择一种字符类型,并循环回到大写、小写、符号和数字的确认开头,以便用户必须至少选择一种.
如有任何帮助,我们将不胜感激。
谢谢!
这里是密码长度的代码
var passLength;
while (passLength >= 129 || passLength <= 7) {
passLength = parseInt(prompt('How many charcters would you like? (8-128)'))
if (passLength <= 128 || passLength >= 8) {
break;
}
alert("Password length must be 8 to 128 characters long!");
}
这里是单独字符的代码,我需要至少选择其中一个。
var chosenCharactersArr = []
var passwordstring = ''
if (confirm('would you like Capital letters?')) {
chosenCharactersArr.push(upperCase)
}
if (confirm('would you like to include lowercase letters?')) {
chosenCharactersArr.push(lowerCase)
}
if (confirm('would you like to include numbers?')) {
chosenCharactersArr.push(numbers)
}
if (confirm('would you like to include symbols?')) {
chosenCharactersArr.push(symbols)
}
您的长度检查有误。在这种情况下你不能使用 ||
因为你想检查下限和上限是否都有效,因此 &&
.
对于问题循环,您可以使用 while (true)
循环,一旦您完成问题即配置,您就可以 break
。
我使用一个对象来存储具有默认值的配置值。您也可以使用数组。但是,您必须以某种方式管理索引。
const TYPE_NUMBER = 0;
const TYPE_BOOLEAN = 1;
const TYPE_STRING = 2;
const config = {
len: 8,
upc: false,
loc: false,
num: false,
sym: false
};
while (true) {
const len = ask('How many charcters would you like? (8-128)', TYPE_NUMBER);
if (len <= 128 && len >= 8) {
config.len = len; break;
} else {
alert("Password must be 8 to 128 characters long!");
}
}
const upc = ask('Would you like to use capital letters?', TYPE_BOOLEAN);
if (upc) { config.upc = upc; }
// ... repeat the same for the other questions ...
console.log(config);
function ask(msg, type) {
let result;
if (type === TYPE_BOOLEAN) {
result = confirm(msg);
} else if (type === TYPE_NUMBER) {
result = parseInt(prompt(msg));
} else if (type === TYPE_STRING) {
result = prompt(msg);
} else {
result = "";
}
return result;
}