2014-02-06 76 views
0

我想随机化对象中的对象。简单的编程数学

do{ 
     e = enemyList[Math.floor(enemyList.length * Math.random())]; 
    } while (e.level > (player.level + 5) && e.level < (player.level - 5)); 
    return e; 

我该如何做到这一点,所以“e”必须在5级以上和5级以下,以便循环停止?

是啊,这是很容易的,但我的头很痛因为某些原因:P

+4

它怎么能同时在5层以上和5层以下? – Barmar

+0

你能多解释一下还是举个例子?我不知道你的意思是5级以上,5级以下。此外,它看起来好像你的函数只返回一个对象(除非我读错了),那为什么是循环? – BrettFromLA

+0

我希望敌人的等级在玩家的等级减5和加5之间。所以如果你是等级15,while语句应该在10到20之间停止 – ECMAScript

回答

3

我相信你应该使用一个or不是and。如果它低于5或者高于5。否则,条件永远不会被满足。

+0

为什么?我希望它只在-5到+5之间 – ECMAScript

+0

哦,我的印象是你希望它在上面和下面。在这种情况下,看起来NPE的答案会做你正在寻找的东西。 –

+0

+1不,这实际上是正确的答案,因为OP希望循环在“e”超出范围时继续。如果OP遵循此答案,那么一旦“e”处于范围内,循环将退出。 – Matt

2

你有比较以错误的方式(+应该-反之亦然):

} while (e.level > (player.level - 5) && e.level < (player.level + 5)); 

(你的问题的措辞是有些模棱两可的;它可能是你应该使用>=<=而不是><。)

+0

订单有什么不同?除非有副作用,'&&'是可交换的。 – Barmar

+0

@Barmar:如果仔细观察,差异不仅仅在于订单(事实上,它与订单无关)。 – NPE

+1

你已经改变了这个意义 - 你正在测试'e'是否低于5和低于5。 – Barmar