如果用户的答案是NaN,请提醒NaN并再次询问号码

时间:2018-04-28 22:35:17

标签: javascript function if-statement

我正在编写一个函数,要求用户输入一个数字并返回该数字的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()




4 个答案:

答案 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))
}

请参阅Block Statement

答案 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();