如果用户在提示框中没有输入任何内容,那么它也显示“数字是素数”,我已在下面进行验证。此外,如果我在提示框中输入“1”,它仍然显示“数字是素数”。
var Num = prompt("Enter the Number");
var flag = 0;
if (isNaN(Num)) {
alert("please enter valid number");
}
for (var i = 2; i < Num; i++) {
if (Num % 2 === 0) {
flag = 1;
break;
}
}
if (flag === 0) {
alert("The num is prime");
}
else if (flag === 1) {
alert("The num is not prime");
}
答案 0 :(得分:-1)
令人讨厌的是, isNaN("")
返回false,好像""
是一个数字。要解决空提示问题,您需要检查Num.length > 0
isNaN
函数不用于检查某些内容是否可以解释为数字。它旨在检查提供的值是否是特定的NaN
值。我的建议是尝试将提示的字符串转换为数字,看看转换是否成功。
var Num = parseInt(prompt("Enter the Number"), 10);
if(Number.isNaN(Num)) {
alert("please enter valid number");
}
请注意:这不会确保所有提供的值都有效。例如,parseInt("ABC123")
将按预期返回NaN
,但parseInt("123ABC")
将返回123
并忽略后续&#34; ABC&#34;。
关于1s的问题,您提供的代码似乎将所有奇数标记为素数。假设你已经编写了确定奇数是否为素数的部分,你可以有一个特殊情况说&#34;如果数字是1,它就不是素数。&#34;这是因为出于多种目的,1就像素数一样。显然,它不是最优雅的解决方案,但......它有效。