我正在编写一个函数,要求用户输入一个数字并返回该数字的sqrt。如果他们没有提供号码,我需要提醒(NaN)并再次提示输入号码。不知道我在这里做错了什么,它正在返回sqrt,但我无法让NaN部分工作。
function sqrtUserNum() {
let userNum = parseFloat(prompt("Give me a number and I'll tell you it's square-root."));
if (isNaN(userNum)) {
alert(NaN)
prompt(userNum)
}
if (!isNaN(userNum)); {
alert(Math.sqrt(userNum))
}
}
sqrtUserNum()

答案 0 :(得分:1)
问题是您如何使用此link
prompt(userNum)
进行循环,并在不是数字时请求号码。do-while-loop
来避免像Number
4yryr
答案 1 :(得分:1)
正如评论所指出的,您在代码中存在拼写错误。你可能想要实现的是:
function sqrtUserNum() {
let userNum;
for (;;) {
userNum = parseFloat(prompt("Give me a number and I'll tell you it's square-root."));
if (!isNaN(userNum))
break;
alert("The number was not valid!");
}
alert(Math.sqrt(userNum));
}
sqrtUserNum()
换句话说,您希望提醒用户该号码无效,然后重试,直到您获得实际号码。
答案 2 :(得分:0)
编程是关于遵循语法规则的一点点,以下是“可疑的”:
if (!isNaN(userNum)); {
alert(Math.sqrt(userNum))
}
这是因为额外的;
导致它被解析为:
if (!isNaN(userNum)) /* do nothing */;
/* block unrelated to conditional, which is always executed */
{
alert(Math.sqrt(userNum))
}
答案 3 :(得分:0)
首先,您的代码中存在一些拼写错误。
如果您想继续请求号码,如果用户没有输入号码,我修改了您的脚本以完成该操作。 (我无法从你的问题中说出来):
function sqrtUserNum() {
let userNum = parseFloat(prompt("Give me a number and I'll tell you it's square-root."));
while (isNaN(userNum)) {
alert("NaN");
userNum = parseFloat(prompt("Please enter a number."));
}
alert(Math.sqrt(userNum));
}
sqrtUserNum();
如果您不想这样做,应该这样做:
function sqrtUserNum() {
let userNum = parseFloat(prompt("Give me a number and I'll tell you it's square-root."));
if (isNaN(userNum)) {
alert("NaN");
userNum = parseFloat(prompt("Give me a number and I'll tell you it's square-root."));
}
if (!isNaN(userNum)) {
alert(Math.sqrt(userNum));
}
}
sqrtUserNum();