我正在尝试从3个字符串数组中随机选择元素?
private static String[] one ={"dog, cat"};
private static String[] two ={"ate, ran"};
private static String[] three ={"away, some}"
Random words = new Random();
int index=words.nextInt(one.length+two.length+three.length);
System.out.println(one[index]);
答案 0 :(得分:1)
该程序的问题在于您获得0到6之间的随机数,然后使用此随机数作为索引从第一个数组中获取值。这里有两个问题,
在某些情况下,一个[index]会导致arrayindexoutofboundsexception,因为当index也可以是2,3,4或5时,一个的最大索引是1。
此外,目标是从三个字符串数组中获取一个随机元素,而不只是一个
我的建议是获得一到三(包括)之间的随机数来选择一个字符串数组,然后找到一个介于0和所选数组长度之间的随机数。并将其分配给所选数组的索引。
答案 1 :(得分:0)
两步法最好:
将所有数组合并为一个更大的数组。 This SO thread演示了实现此目标的几种方法。例如,尝试此方法(来自here):
public String[] concat(String[] a, String[] b) {
int aLen = a.length;
int bLen = b.length;
String[] c= new String[aLen + bLen];
System.arraycopy(a, 0, c, 0, aLen);
System.arraycopy(b, 0, c, aLen, bLen);
return c;
}
// use it like this
String[] combined = concat(concat(one, two), three);
从组合数组中选择一个随机元素,并将其打印出来:
int index = r.nextInt(combined.length);
System.out.println(combined[index]);