2013-02-19 23 views
-1

这是我到目前为止有: 我的列表:如何从Java中的列表中随机选择一个整数?

private int [] delays = {1000, 1333, 3443, 1220, 3232}; 

我想有一个功能,它会睡了一会儿,然后再继续:字符串

sleep(random(delays)) 

我已经找到了解决方案然而,当涉及到整数我不真正理解它。

请有人可以帮助我的代码并解释它吗?

我已经导入了随机,

我:

Random rand = new Random(); 
int delayIndex = rand.nextInt(delays.length); 

但是它说:在类型随机的方法nextInt(INT,INT)不适用于参数(INT)

感谢您的支持。

我感谢你的帮助,但是我很歌厅问题仍然存在的:

在类型的方法nextInt(INT,INT)随机不适用于参数(INT)

我不明白为什么,我完全陌生的Java如此裸露与我。

+0

你想从'延迟'数组中随机选择一个整数吗? – 2013-02-19 19:03:07

+2

你确定你没有意外地用逗号“,”而不是“。”来输入“(延迟,长度)”吗? – rgettman 2013-02-19 19:08:46

+0

是的,我相信我没有使用逗号..和是的帕维尔试图随机选择。 – Echoe 2013-02-19 19:15:22

回答

1

使用Java的内置Random类来选择0到数组最后一个索引之间的随机整数。

import java.util.*; 

Random rnd = new Random(); 
int delayIndex = rnd.nextInt(delays.length); 

然后访问您的数组并将该数组元素馈入Thread.sleep

+0

ahhh所以它的delays.length,我使用的是delays.getSize():S让我检查一下! 2分钟,谢谢! 哦,是啊,这是我得到的问题:Random类型的nextInt(int,int)方法不适用于参数(int) – Echoe 2013-02-19 19:04:19

+0

是的,它是一个数组,因此使用delays.length。 – rgettman 2013-02-19 19:05:12

1

0...N生成一个随机值,其中N是保存持续时间的数组大小。一旦你有了这个随机值,它是数组的一个索引,只需在该索引位置从数组中检索持续时间的睡眠。

Random random = new Random(); 
int randomInt = random.nextInt(delays.length); 
sleep(delays[randomInt]); 
1
Random r = new Random(); 

Thread.sleep (delays [r.nextInt (delays.length)]); 
+0

我仍然得到错误:Random类型的nextInt(int,int)方法不适用于参数(int) – Echoe 2013-02-19 19:16:26

+0

@Echoe请确保您的“Random”实际上是java.util.Random。 – 2013-02-19 19:18:01

1
Random rnd = new Random(); 
int index = rnd.nextInt(delays.length); 
+0

在你的情况下,'index'将从'-delays.length + 1'到'delays.length-1'包含在内,即它可以是负数。 – 2013-02-19 19:27:03

+1

@MikhailVladimirov谢谢,忘了Java给mod的负面结果。 – NominSim 2013-02-19 19:43:59

1
public int random(int[] delays){ 
    Random rn = new Random(); 
    int range = delays.length - 1; 
    int pos = rn.nextInt() % range; 

    return delays[pos]; 
} 
1
sleep(delays[(int)(Math.random() * 100)/20]); 

Math.random()返回一个随机数> = 0.0和< 1.0

乘以100,转换为int,并除以20 - 你现在有一个随机数0 - 4.

或者:

sleep(delays[new Random().nextInt(5)]); 

http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#random() http://docs.oracle.com/javase/7/docs/api/java/util/Random.html

+0

谢谢你,这似乎有我的问题解决..我感谢您的帮助!任何想法似乎是nextInt事情的问题? – Echoe 2013-02-19 19:18:17

+0

'Random.nextInt()'接受一个参数;一个'int'。它实际上是唯一的上限。你会得到一个介于零和那个数字之间的数字。 – 2013-02-19 19:21:00

+0

如果您收到您声明的消息,则您正在导入一些奇怪的东西,而不是'java.util.Random'。 – 2013-02-19 19:24:48

0

整数数组没有解释,阵列通常具有顺序存储器存储的对象(例如0 = 1,1 = 16,2 = 0,3 = 100) 但无论如何这里是如何与一个整数数组做到这一点:

int[] delays = {1000, 1333, 3443, 1220, 3232}; 
Random rand = new Random(); 
Thread.sleep(delays[rand.nextInt(delays.length)]); 

要使用整数列表做的一个列表中的同一它会是这样的:

List<Integer> delays = Lists.newArrayList(1000, 1333, 3443, 1220, 3232); 
int delay; 
for (Iterator<Integer> iter = delays.iterator(); iter.hasNext();){ 
    Random rand = new Random(); 
    if(rand.nextInt(delays.size()) == delays.size()){ 
      delay = iter.next(); 
      break; 
    } 
} 
Thread.sleep(delay); 

正如你大概可以猜到我也是新来的java,但我希望我可以帮助。

相关问题