我正在尝试创建一个函数,在范围(0-100)中随机化三个数字并打印最大的数字

时间:2013-09-04 07:06:02

标签: javascript math random

...但是当我在控制台中调用该函数时,它返回undefined。我是一个JavaScript新手,所以我可能犯了一个基本的错误,如果有人可以帮助我,我会很高兴: - )。

以下是代码:

var randomPrint = function(){

x = Math.floor(Math.random() * 100);
y = Math.floor(Math.random() * 100);
z = Math.floor(Math.random() * 100);

   console.log(x, y, z);

   if(x > y && x > z)
   {
     console.log("The greatest number is" + " " + x);
   }
   else if(y > z && y > x)
   { 
     console.log("The greatest number is" + " " + y);
   }
   else if(z > y && z > x)
   {   
    console.log("The greatest number is" + " " + z);
   }
};
randomPrint();

5 个答案:

答案 0 :(得分:1)

理智的方式:

var nums = [];
for (var i = 0; i < 3; i++) {
    nums.push(Math.floor(Math.random() * 100));
}

console.log('Largest number is ' + Math.max.apply(null, nums));

或者:

nums = nums.sort();
console.log('Largest number is ' + nums[nums.length - 1]);

是的,该函数将返回 undefined,因为您不是从函数返回任何内容。可能没有一个条件匹配,所以你也没有看到任何其他输出。

答案 1 :(得分:1)

试试这个内置方法来获取最大值

Math.max(x,y,z);

答案 2 :(得分:1)

如果你可以扔掉其他两个数字:

for (var i = 0, max = -Infinity; i < 3; ++i) {
    max = Math.max(Math.floor(Math.random() * 100), max);
}

alert(max);

答案 3 :(得分:0)

deceze的答案是一个更好的解决方案,但我也看到了你的工作。控制台中的示例输出是:

35 50 47
The greatest number is 50
undefined

未定义的部分是因为该函数没有返回任何内容。你可以把它写成

var randomPrint = function(){

    x = Math.floor(Math.random() * 100);
    y = Math.floor(Math.random() * 100);
    z = Math.floor(Math.random() * 100);

   console.log(x, y, z);

   if(x > y && x > z) {
        var biggest = x;
        console.log("The greatest number is" + " " + x);
   } else if(y > z && y > x) { 
       console.log("The greatest number is" + " " + y);
       var biggest = y;
   } else if(z > y && z > x) {   
       console.log("The greatest number is" + " " + z);
       var biggest = z;
   }
   return biggest;
};

randomPrint();

答案 4 :(得分:0)

        var randomPrint = function(){

    x = Math.floor(Math.random() * 100);
    y = Math.floor(Math.random() * 100);
    z = Math.floor(Math.random() * 100);

       console.log(x, y, z);
       console.log("this is max " +Math.max(x,y,z);)
}();

你的逻辑也没错。很好,未定义可能会在其他地方出现。

  

88 36 15 localhost /:16   最大的数字是88

这是我得到的代码的输出。