0

我在 Code.org AppLab 上有一个硬币翻转模拟器。(为了清楚起见,它是用 JavaScript 编写的。)有一个文本输入框,用户可以在其中输入所需的翻转次数,然后单击其下方的按钮。我希望这段代码检查输入是否不是数字,所以我使用了 isNaN ...

onEvent("button2","click",function(){

if (getNumber("text_input1") == isNaN) {

    setText("text_area1","Please enter an integer.");
  } else {
    while ((flipCt < Math.abs(getNumber("text_input1")))) {
    flipVal = randomNumber(0, 1);
    flipCt++;
    if (flipVal == 1) {
        headcount++;
        headstreak++;
        if (headstreak > hscount) {
          hscount = headstreak;
        }
        tailstreak = 0;
      } else {
        tailcount++;
        tailstreak++;
        if (tailstreak > tscount) {
          tscount = tailstreak;
        }
        headstreak = 0;
      }
    }
    setText("VERY LONG LINE OF CODE, so I deleted it for this post."));
  }
});

所以......第2行是我的问题。我似乎无法让它正确检查 NaN - 如果我输入一个非数字值,它总是跳到“else”部分并将其设为 0。有什么建议么?

4

2 回答 2

0

你也可以试试

onEvent("button2","click",function(){

if (!getNumber("text_input1").includes(1,2,3,4,5,6,7,8,9) { /// make sure to put the "!"

    setText("text_area1","Please enter an integer.");
  } else {
    while ((flipCt < Math.abs(getNumber("text_input1")))) {
    flipVal = randomNumber(0, 1);
    flipCt++;
    if (flipVal == 1) {
        headcount++;
        headstreak++;
        if (headstreak > hscount) {
          hscount = headstreak;
        }
        tailstreak = 0;
      } else {
        tailcount++;
        tailstreak++;
        if (tailstreak > tscount) {
          tscount = tailstreak;
        }
        headstreak = 0;
      }
    }
    setText("VERY LONG LINE OF CODE, so I deleted it for this post."));
  }
});

这将让它检查 text_input1 中是否没有任何数字。否则,它将运行您的其余代码。

于 2021-04-19T23:11:31.250 回答
0

isNan 的语法是错误的。您需要使用 isNaN(getNumber("text_input1")) 。如果它的 Nan 它返回 true 否则返回 false

于 2020-05-18T16:17:44.093 回答