Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-输入不是数字时提示_Javascript_Loops - Fatal编程技术网

JavaScript-输入不是数字时提示

JavaScript-输入不是数字时提示,javascript,loops,Javascript,Loops,我想问用户一个数字,而他的答案不是一个数字,这个问题将作为一个警报框不断循环 我试着用while-loop和isNaN这样做,但我做错了什么 这是我的Js: isNan是一个函数-您需要在它后面加括号,然后将参数放在括号内来调用它 如果参数不是数字,isNaN函数返回true;如果参数不是数字,则返回false。因为您想检查问题是否是一个数字,所以我们可以使用!前缀,如果问题是数字,则会导致if语句的主体触发 var correct = false; do { var question =

我想问用户一个数字,而他的答案不是一个数字,这个问题将作为一个警报框不断循环

我试着用while-loop和isNaN这样做,但我做错了什么

这是我的Js:

isNan是一个函数-您需要在它后面加括号,然后将参数放在括号内来调用它

如果参数不是数字,isNaN函数返回true;如果参数不是数字,则返回false。因为您想检查问题是否是一个数字,所以我们可以使用!前缀,如果问题是数字,则会导致if语句的主体触发

var correct = false;

do {
  var question = prompt("guess the number?");
  if (!isNaN(question)) {
    document.write("your number is " + question);
    correct = true;
    break;
  }
} while (!correct);
isNan是一个函数-您需要在它后面加括号,然后将参数放在括号内来调用它

如果参数不是数字,isNaN函数返回true;如果参数不是数字,则返回false。因为您想检查问题是否是一个数字,所以我们可以使用!前缀,如果问题是数字,则会导致if语句的主体触发

var correct = false;

do {
  var question = prompt("guess the number?");
  if (!isNaN(question)) {
    document.write("your number is " + question);
    correct = true;
    break;
  }
} while (!correct);
是一个有一些特殊规则的函数。您应该首先尝试将输入解析为一个数字,然后对该结果使用isNaN。如果从字符串到数字的转换失败,Number返回NaN

变量输入1=1234; var输入2=abcd; alertisNaNNumberinput1; 警报为nannumberinput2 是一个有一些特殊规则的函数。您应该首先尝试将输入解析为一个数字,然后对该结果使用isNaN。如果从字符串到数字的转换失败,Number返回NaN

变量输入1=1234; var输入2=abcd; alertisNaNNumberinput1; 警报为nannumberinput2 几个错误

isNaN是一个函数:isNaNNaN返回true,而isNaN1或isNaN1返回false prompt总是返回一个字符串,而不是NaN 您可以使用将提示结果转换为数字,然后检查是否为NaN

也就是说,如果您只是尝试查看字符串是否只包含数字,则isNaN不适合,因为空格或\n\t将全部转换为0并给出误报

A会做正确的事

var question = prompt("guess the number?");
var containsOnlyDigits = /^[0-9]+$/; // one or more of digits 0 to 9
if (containsOnlyDigits.test(question)) {
  ...
几个错误

isNaN是一个函数:isNaNNaN返回true,而isNaN1或isNaN1返回false prompt总是返回一个字符串,而不是NaN 您可以使用将提示结果转换为数字,然后检查是否为NaN

也就是说,如果您只是尝试查看字符串是否只包含数字,则isNaN不适合,因为空格或\n\t将全部转换为0并给出误报

A会做正确的事

var question = prompt("guess the number?");
var containsOnlyDigits = /^[0-9]+$/; // one or more of digits 0 to 9
if (containsOnlyDigits.test(question)) {
  ...

我将通过以下示例为您提供一些提示:

<html>
 <head>
    <title></title>
    <script>

    var answer = "";

    do {
        answer = prompt("guess the number?");
    } while(!isNumber(answer));

    document.write("your number is " + answer);

    function isNumber(value) {
      var numberPattern = /^[0-9]+$/; // one or more of digits 0 to 9
      return numberPattern.test(value);
    }

    </script>
 </head>
 <body>

</body>
示例如下:

无需创建名为correct的附加变量来检查条件是否为true或false,因为您已清除了条件isNananswer,因此while应在isNananswer时使用该条件

当您编写代码时,您应该写得尽可能干净,如果您正在保存提示符的结果,那么命名变量answer会更清楚,因为您保存的是答案而不是问题,这是一个方法调用


我将通过以下示例为您提供一些提示:

<html>
 <head>
    <title></title>
    <script>

    var answer = "";

    do {
        answer = prompt("guess the number?");
    } while(!isNumber(answer));

    document.write("your number is " + answer);

    function isNumber(value) {
      var numberPattern = /^[0-9]+$/; // one or more of digits 0 to 9
      return numberPattern.test(value);
    }

    </script>
 </head>
 <body>

</body>
示例如下:

无需创建名为correct的附加变量来检查条件是否为true或false,因为您已清除了条件isNananswer,因此while应在isNananswer时使用该条件

当您编写代码时,您应该写得尽可能干净,如果您正在保存提示符的结果,那么命名变量answer会更清楚,因为您保存的是答案而不是问题,这是一个方法调用

如上所述,isNan是一个函数,它获取一个参数作为其输入

在isNan中进行测试之前,您不必将提示符转换为数字,正如您在文档中看到的那样,它也可以接受字符串

该函数将在后台内部执行转换:

你可以把isNaN想象成:

isNaN = function(value) {
   Number.isNaN(Number(value));
}
以下是一段代码片段,可供您使用:

var correct=false; 做{ var answer=提示猜测数字?; //isNaN函数获取一个数字参数 //您还需要检查是否有值。 //如果用户单击no ESC,您将得到null 如果回答&&!是NanAnswer{ //一旦加载文档,您就无法对其进行写入。 //它将清除页面中以前的任何内容 document.writey您的号码是+答案; 正确=正确; 打破 } }一会儿!对的 如上所述,isNan是一个函数,它获取一个参数作为其输入

在isNan中进行测试之前,您不必将提示符转换为数字,正如您在文档中看到的那样,它也可以接受字符串

该函数将在后台内部执行转换:

你可以把isNaN想象成:

isNaN = function(value) {
   Number.isNaN(Number(value));
}
以下是一段代码片段,可供您使用:

v ar正确=错误; 做{ var answer=提示猜测数字?; //isNaN函数获取一个数字参数 //您还需要检查是否有值。 //如果用户单击no ESC,您将得到null 如果回答&&!是NanAnswer{ //一旦加载文档,您就无法对其进行写入。 //它将清除页面中以前的任何内容 document.writey您的号码是+答案; 正确=正确; 打破 } }一会儿!对的
下面是一个类似的解决方案:

因为让numTrue=false!numTrue;{ var question=promptGuess the Number!,Number; numTrue=!isNaNquestion; }
document.writey您的号码是+问题 下面是一个类似的解决方案:

因为让numTrue=false!numTrue;{ var question=promptGuess the Number!,Number; numTrue=!isNaNquestion; }
document.writey您的号码是+问题;isNaN是一个函数!哦,你说得对。我把它改成了isNaN,但还是不起作用。为什么我在这个问题上得了-1分?有人能解释一下吗?isNaN是一个函数!哦,你说得对。我把它改成了isNaN,但还是不起作用。为什么我在这个问题上得了-1分?谁能解释一下吗?谢谢!你能解释一下为什么你在循环外声明var答案,然后在循环内再次调用它吗?而不是在循环中声明变量?thx@xec如果答案是他在问题中所写的数字,而他的答案不是数字,则循环将运行一次。问题将作为警报框继续循环。@CodeChunk edited,没有必要将其声明在其范围之外,哪个是while循环?你能更详细地解释一下在循环外还是在循环内声明变量吗?@CodeChunk对于这个例子没有多大区别,在其他语言中,你不能访问超出其严格范围的变量,这意味着如果答案在循环内,你就不能访问while外的变量,但现在不适用。谢谢!你能解释一下为什么你在循环外声明var答案,然后在循环内再次调用它吗?而不是在循环中声明变量?thx@xec如果答案是他在问题中所写的数字,而他的答案不是数字,则循环将运行一次。问题将作为警报框继续循环。@CodeChunk edited,没有必要将其声明在其范围之外,哪个是while循环?你能更详细地解释一下在循环外还是在循环内声明变量吗?@CodeChunk对于这个例子没有多大区别,在其他语言中,你不能访问超出其严格范围的变量,这意味着如果答案在循环内,你就不能访问while外的变量,但现在不适用。