这是我到目前为止所拥有的: 我的清单:
private int [] delays = {1000, 1333, 3443, 1220, 3232};
我希望有一个功能,它会在继续之前暂停一段时间:
sleep(random(delays))
我找到了字符串的解决方案但是当谈到整数时,我真的不明白它。
请有人帮我解释一下代码并解释一下吗?
我已导入随机,
我得到了:
Random rand = new Random();
int delayIndex = rand.nextInt(delays.length);
然而它说:Random类型中的方法nextInt(int,int)不适用于参数(int)
感谢你对我的反应。
感谢您的帮助,但我正在解决的问题仍然存在:
Random类型的方法nextInt(int,int)不适用于参数(int)
我不明白为什么,我对Java完全不熟悉。
答案 0 :(得分:1)
使用Java的内置Random
类来选择0和数组最后一个索引之间的随机整数。
import java.util.*;
Random rnd = new Random();
int delayIndex = rnd.nextInt(delays.length);
然后访问您的数组并将该数组元素提供给Thread.sleep
。
答案 1 :(得分:1)
从0...N
生成随机值,其中N是保持持续时间的数组的大小。一旦你有了一个随机值,这是一个数组的索引,只需在从索引位置的数组中检索持续时间。
Random random = new Random();
int randomInt = random.nextInt(delays.length);
sleep(delays[randomInt]);
答案 2 :(得分:1)
Random r = new Random ();
Thread.sleep (delays [r.nextInt (delays.length)]);
答案 3 :(得分:1)
Random rnd = new Random();
int index = rnd.nextInt(delays.length);
答案 4 :(得分:1)
public int random(int[] delays){
Random rn = new Random();
int range = delays.length - 1;
int pos = rn.nextInt() % range;
return delays[pos];
}
答案 5 :(得分: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
答案 6 :(得分: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的新手,但我希望我能提供帮助。