gpt4 book ai didi

整数输入的 JavaScript 提示验证

转载 作者:行者123 更新时间:2023-11-30 14:25:03 24 4
gpt4 key购买 nike

我发现自己需要创建一个函数来验证 JS 提示符的输入是否为整数。事实证明,按下 cancel 会返回 null。

我最初尝试的(从 Python 程序移植)是:

function getInteger() {
let number = null
while ( number == null ) {
let value = prompt( "Guess number: " )
if ( isNaN( value ) ) {
alert( "Invalid input." )
} else {
number = parseInt( value )
}
}
return number;
}

但是,如果我取消提示,这将返回 NaN,这作为返回值没有意义(似乎 isNaN(null) 返回 false )。 (没有意义,我的意思是“不能被程序的其余部分有意义地使用,因为它没有描述发生的事情”)。

经过深思熟虑,我想到了:

function getInteger(){
while(true){
let input = prompt("Input number: ");
if (input && isNaN( input ) ) {
// user pressed OK, but input invalid
alert("Invalid input.");
} else if (input) {
// user typed something valid and hit OK
return parseInt(input);
} else {
// User pressed cancel
alert("I'm out of here.")
return;
}
}
}

getInteger()

我很好奇我是否涵盖了所有可能的输入?另外,我的代码是否“写得好”——有更好的方法吗?使用 while(true) 是个坏主意吗?

我知道提示通常可能不是一个好主意,但这不是这里的重点。

感谢任何帮助。

最佳答案

我在上面运行您的代码,我尝试不输入任何内容,然后按“确定”并显示警报,就像我取消提示一样。我认为您还应该检查用户是否输入了某些内容或什么也没输入。您的代码可能如下所示:

function getInteger(){
while(true){
let input = prompt("Input number: ");

if (input == null) {
// user hit cancel
alert("I'm out of here.")
return true;
} else{
if (input.length<=0 || isNaN( input ) ) {
// user pressed OK, but input invalid or does not input anything
alert("Invalid input.");
} else {
// user typed something valid and hit OK
return parseInt(input);
}
}
}
}

getInteger()

关于整数输入的 JavaScript 提示验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52078896/

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