You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中不修改方法参数时如何传递ArrayList<String>?

解决Java方法间集合传递与未初始化变量问题

我是Java编程新手,现需将getChosenWords(int length)方法中的ArrayList<String> chosenWords传递给getRandom(int length)方法,以随机选取字符串。注意:该ArrayList未在类字段中声明,且无法修改方法参数(单元测试及其他类依赖现有参数)。目前getRandom方法中ArrayList<String> chosenWords;未初始化,导致random.nextInt(chosenWords.size());出现「变量未初始化」错误,寻求解决办法。

方法1

// 将ArrayList words中长度为length的字符串存入ArrayList chosenWords
public ArrayList<String> getChosenWords(int length) {
       ArrayList<String> chosenWords = new ArrayList<>(); 
       
       for(String word1 : words) {
            if(word1.length() == length) {
                 chosenWords.add(word1);
            }
       }
       return chosenWords;  
}

方法2

// 从ArrayList chosenWords中随机返回一个字符串
public String getRandom(int length) {
    ArrayList<String> chosenWords;
    Random random = new Random();
    int randomIndex = random.nextInt(chosenWords.size());
    return chosenWords.get(randomIndex);        
}

可行解决方案

由于无法修改方法参数,直接在getRandom方法内部调用getChosenWords(length)即可获取所需的单词集合,同时必须处理集合为空的边界情况,避免运行时异常:

public String getRandom(int length) {
    ArrayList<String> chosenWords = getChosenWords(length);
    // 处理无符合条件单词的情况
    if (chosenWords.isEmpty()) {
        return null; // 可根据业务需求改为返回默认字符串或抛出自定义异常
    }
    Random random = new Random();
    int randomIndex = random.nextInt(chosenWords.size());
    return chosenWords.get(randomIndex);        
}
  • 该方案无需修改方法参数,也不用将chosenWords声明为类字段,完全满足限制条件。
  • 空集合判断是必要的,否则当没有长度匹配的单词时,会抛出IllegalArgumentException(nextInt传入0时)或后续的索引越界异常。

内容的提问来源于stack exchange,提问作者ASwainy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:50:24