javascript - 验证和循环javascript
问题描述
我需要验证三个不同提示的用户输出,并认为这可行,但事实并非如此。
第一个提示需要验证澳大利亚 8 个州和领地中的任何一个。
第二个提示需要验证用户输入了一个整数。
第三个提示需要验证用户输入了一个负数或正数,可以是整数也可以是小数。
然后整个事情需要再次循环,以便可以再次询问三个提示。所以它可以建立一个表。
function ask() {
var stInput = '';
var populationInput = '';
var changeInput = '';
var entering = confirm('Confirm to add state or territory');
if (!entering) {
return;
} else {
while (true) {
stInput = prompt('Enter state or territory');
function validateUserChoice(stInput) {
if (stInput !== "Queensland" && stInput !== "New South Wales" && stInput !== "Victoria" && stInput !== "Tasmania" && stInput !== "Northern Territory" && stInput !== "Western Australia" && stInput !== "South Australia" && stInput !== "Australian Capital Territory") {
} else {
return false;
}
}
populationInput = prompt('Enter population for ' + stInput + '');
while(!isValid(populationInput)) {
alert('Your input was invalid');
populationInput = parseInt(prompt('Enter population for ' + stInput + ''));
}
changeInput = prompt('Enter growth rate for ' + populationInput + '');
while(!isValid(changeInput)) {
alert('Your input was invalid');
changeInput = parseFloat(prompt('Enter growth rate for ' + populationInput + ''));
}
break;
}
alert("invalid state or territory");
}
解决方案
我不能谈论你更大的问题,但我会告诉你,任何时候我使用while
循环,我总是在故障安全中编程。我通常称它们为safetyValve
. 它可以防止系统陷入无限循环并崩溃。它看起来有点像:
var myCondition = true;
var safetyValve = 0;
var safetyMax = 10000;
while (myCondition && safetyValve < safetyMax) {
...
safetyValve++;
}
推荐阅读
- r - R 括号问题和简化 CSV 连接的替代方法
- c# - 在 c# 中复制不安全字节 * 缓冲区的最快方法是什么?
- bash - 简单的 bash shell 程序
- javascript - 你如何在反应中分享风格?
- python - Python中的“鸭子打字”也是一种“外观设计模式”吗?
- r - 使用 azuremlsdk 的 azure 机器学习和 R - 支持的 R 版本和 custom_docker_image
- python - 支付计算器 - 不支持的操作数
- javascript - 无法在 AWS EC2 实例上运行基于 NextJS 的节点服务器
- javascript - 如何使用b-pagination api?
- netlogo - 最老特工的链接在第一次滴答后死亡