我试图从3个字符串数组中随机选择元素?

时间:2015-12-15 03:23:46

标签: java arrays random

我正在尝试从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]);

2 个答案:

答案 0 :(得分:1)

该程序的问题在于您获得0到6之间的随机数,然后使用此随机数作为索引从第一个数组中获取值。这里有两个问题,

  1. 在某些情况下,一个[index]会导致arrayindexoutofboundsexception,因为当index也可以是2,3,4或5时,一个的最大索引是1。

  2. 此外,目标是从三个字符串数组中获取一个随机元素,而不只是一个

  3. 我的建议是获得一到三(包括)之间的随机数来选择一个字符串数组,然后找到一个介于0和所选数组长度之间的随机数。并将其分配给所选数组的索引。

答案 1 :(得分:0)

两步法最好:

  1. 将所有数组合并为一个更大的数组。 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);
    
  2. 从组合数组中选择一个随机元素,并将其打印出来:

    int index = r.nextInt(combined.length);
    System.out.println(combined[index]);