如何仅选择具有特定长度的数组中的元素

时间:2015-09-30 02:57:23

标签: java arrays string random

public String[] words={"cat", "dog", "rodeo", "bird", "lookers", "skid");

// Picks a random word from the dictionary, given the length of the word
public String pickWord(int size)
{

}

因此,如果用户输入4,则随机选择4个字母的单词数组中的单词。我已经从Random类创建了一个rand变量。那么如何选择数组中的元素,其字母数与用户输入的数字相同。

5 个答案:

答案 0 :(得分:3)

以下是一个解决问题的示例方法。

String[] words;
public String pickWord(int size){
    List ls = new ArrayList<String>();
    for(int i=0; i>words.length;i++){
        if(words[i].length() == size){
            ls.add(words[i]);
        }
    }
    Collections.shuffle(ls);
    if(ls.isEmpty()){
        return null;
    }
    return (String) ls.get(0);
}

答案 1 :(得分:1)

你可以非常简单地做一些像......这样的事情。

public String pickWord(int size) {

    List<String> results = Arrays.stream(words).
        filter((String t) -> t.length() == size).
        collect(Collectors.toCollection(ArrayList::new));
    Collections.shuffle(results);
    return results.isEmpty() ? null : results.get(0);

}

类似......

System.out.println(pickWord(3));
System.out.println(pickWord(4));
System.out.println(pickWord(5));
System.out.println(pickWord(6));

可以打印类似......

cat
skid
rodeo
null

答案 2 :(得分:1)

从数组中获取长度等于输入的字符串,并将它们放入列表中。生成随机int到列表的大小,然后从列表中随机获取单词。

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    int maxLen;
    ArrayList<String> list = new ArrayList();
    String[] words = {"cat", "dog", "rodeo", "bird", "lookers", "skid"};
    // Picks a random word from the dictionary, given the length of the word
    System.out.println("Please input the max length of the word.");
    maxLen = sc.nextInt();
    for (String s : words) {
        if (s.length() == maxLen) {
            list.add(s);
        }
    }
    System.out.println(pickWord(list));

}

static String pickWord(ArrayList<String> list) {
    Random rd = new Random();
    int randInt = rd.nextInt(list.size());
    String picked = list.get(randInt);
    return picked;
}

答案 3 :(得分:0)

计算具有该长度的单词数。如果为0,则返回null。如果为1,则返回单词。否则,使用Random.nextInt(count)获取0count-1之间的数字,然后找到该字词并将其返回。

答案 4 :(得分:0)

您可以根据用户输入生成一个包含n长字的新数组,并从新数组中提取随机索引,因为所有元素都符合指定的长度。