【问题标题】:why this while loop exit but execute the inside code?为什么这个while循环退出但执行内部代码?
【发布时间】:2014-03-22 12:19:01
【问题描述】:

如果我输入一个数字,这段代码就可以正常工作,每当我输入字符串“end”时,它应该退出while循环而不执行代码。

但是如果我输入 "end" 我会得到 total: NaNended ,为什么?

我想得到我输入的数字的总和。

var i = 1;
var totale = 0;
var index = Array();
var domanda = 0;

while (!isNaN(domanda)) {
    domanda = prompt("Write a number, the total so far is: " + totale);
    index[i] = Number(domanda);
    totale += index[i];
    i++;
}

document.writeln("total: " + totale);
document.writeln("ended");

【问题讨论】:

  • 获取输入后需要检查isNaN,如果isNaN中断。

标签: javascript while-loop nan


【解决方案1】:

输入后立即检查 NaN。

var i=1;
var totale = 0;
var index = Array();
var domanda = 0;

while (true) {
   domanda = prompt("Write a number, the total so far is: "+totale);
      if(isNaN(domanda)) {
         break;   
      }
   index[i]=Number(domanda);
   totale += index[i];
   i++;
}

document.writeln("total: " + totale);

document.writeln("ended");

【讨论】:

    【解决方案2】:

    您的while 循环检查domanda 是否不是数字。 然后,您让用户为domanda 输入一个新值,可能是end然后,您将该值添加到您的总数中 - 如果 domanda 不是数字,则使 total 也不是数字。

    您的while 循环只能在以while 开头的行中停止。如果循环体中某处的条件发生变化,则在下一次检查循环条件之前,该迭代仍将完全执行,并且循环被中止。

    在此处更改此设置的一种直接方法是添加另一个检查权限 domanda 已更改:

    while (!isNaN(domanda)) {
        domanda = prompt("Write a number, the total so far is: "+totale);
        if (isNaN(domanda)) {
            break;
        }
        ...
    

    【讨论】:

    • @passegua:如果答案解决了您的问题,请选择已接受,以向所有未来访问者表示问题已解决。如果它在其他方面有帮助,请考虑支持它。
    猜你喜欢
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多