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
相关产品推荐
相关产品推荐

