3

我正在尝试编写一个随机化数字(1 - 100)的代码,然后打印从 40 到那个奇数的所有奇数。如果数字小于 40,它应该打印所有数字,直到随机数。

即如果数字是45,它应该打印41、43、45。如果它是5,它应该打印1、2、3、4、5。

我下面的代码在我添加else if语句之前有效。如果数字高于 40,当我添加它时,它仍然包括从 0 到 40 的所有数字吗?我不明白为什么我认为if陈述应该以一种方式或另一种方式而不是两者兼而有之?

任何想法有助于如何解决这个问题,或者我做错了什么?

提前致谢

function myFunc() {

var x = Math.floor(Math.random() * 100);
var counter = [];

for (var i = 0; i < x; i++) {
    if (i > 40 && i % 2 == 1) {
        counter.push(i);
    } else if (i < 40) {
        counter.push(i);
    }
}

return counter + ',' + x;

}

console.log(myFunc())
4

2 回答 2

3

只需添加一个新变量来检查从哪里开始。这样你也可以缩短循环中的条件。

function myFunc() {

  var x = Math.floor(Math.random() * 100);
  var counter = [];
  var start = x >= 40 ? 40 : 0; // new variable

  for (var i = start; i < x; i++) {
    if (i % 2 === 1) { counter.push(i); }
  }
  return counter + ',' + x;
}

console.log(myFunc())
于 2013-09-05T11:39:33.433 回答
0

你写的条件不正确:

else if (i < 40)

此语句已运行,因为第一个语句为假且 i 正在进行 1、2、3、4,您必须将第二个语句更改为 x < 40

function myFunc() {

var x = Math.floor(Math.random() * 100);
var counter = [];

for (var i = 0; i < x; i++) {
    if (i > 40 && i % 2 == 1) {
        counter.push(i);
    } else if (x <= 40) { // only when x <= 40
        counter.push(i);
    }
}

return counter + ',' + x;

}

console.log(myFunc())
于 2013-09-05T11:55:41.347 回答