【问题标题】:How to stop this for-loop?如何停止这个for循环?
【发布时间】:2016-03-10 15:44:23
【问题描述】:
var number = prompt("Typ some numbers:")
var som = 0

for (var x = 0; x < number.length; x++) {
  if (!(number[x] === 0)) {
    if ((number[x] % 2) === 1) {
      som += (number[x] * number[x])
    }
  } else {
    break;
  }
}

alert(som)

我想输入一些随机数 (0-9),然后在我输入零之前它必须说出所有奇数的平方的 som。例如,我输入:5903. 5*5 + 9*9 = 106。所以在我输入零之后,它必须停止 for 循环继续前进。但是现在如果我输入 5903,它会显示 115,所以现在它仍然会额外计算 3*3。那么在我输入零后如何让它停止呢?它现在不起作用,在我输入零后它会继续。有人知道有什么问题吗?也许是语法?

【问题讨论】:

  • prompt返回值的类型是always string ...
  • 使用== 而不是===

标签: javascript if-statement for-loop break


【解决方案1】:

请更改

if (!(number[x] === 0)) {

if (number[x] !== '0') {

因为你在比较字符串。

工作示例:

var number = prompt("Typ some numbers:"),
    som = 0;

for (var x = 0; x < number.length; x++) {
    if (number[x] !== '0') {
        if ((number[x] % 2) === 1) {
            som += (number[x] * number[x]);
        }
    } else {
        break;
    }
}
alert(som);

【讨论】:

    【解决方案2】:

    您正在检查数字是否等于 0,但您的数字实际上是 '0'

    您需要将输入解析为整数,或者您可以使用双等号

    var number = prompt("Typ some numbers:");
    var som = 0;
    
    for (var x = 0; x < number.length; x++){
      if(number[x] == 0){
        break;
      }  
      if ((number[x] % 2) === 1) {
         som += (number[x] * number[x]);
      }
    
    }
    
    alert(som);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      相关资源
      最近更新 更多