如何在 Java 中将 ArrayList<String> 从一个方法传递到另一个方法。变量未初始化错误

How do I pass an ArrayList<String> from one method to another in Java. Variable not initialised error

提问人:ASwainy 提问时间:9/7/2022 最后编辑:ASwainy 更新时间:9/7/2022 访问量:57

问:

刚接触 Java 编码,请耐心等待。 我正在尝试将我的方法 getChosenWords(int length) 中保存的 ArrayList selectsenWords 传递给我的方法 getRandom(int length)。我需要 ArrayList,以便我可以选择一个随机索引并返回一个随机字符串。

请注意,它未在“类”字段中声明,我无法更改方法的参数。我必须找到另一种方式来传递,但我不确定如何传递。单元测试使用这些设置的参数,我无法更改参数或字段,因为其他类依赖于它们保持不变。ArrayList

我很确定这是需要更改的行,目前我有一个错误变量未在该行上初始化ArrayList<String> chosenWords;random.nextInt(chosenWords.size());

有什么建议吗?

方法1

// Takes strings in ArrayList words and stores strings with char int length to 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

//Returns a randomly selected string from ArrayList chosenWords

public String getRandom(int length) {
    ArrayList<String> chosenWords;
    Random random = new Random();
    int randomIndex = random.nextInt(chosenWords.size());
    return chosenWords.get(randomIndex);        
}
Java 字符串 随机 数组列表 传递引用

评论

3赞 9/7/2022
您的方法返回您创建的 locale arraylist。使用 that 并调用该方法来获取 List:getChosenWordsArrayList<String> chosenWords = getChosenWords(length);
1赞 matt 9/7/2022
为什么要取参数?你不会在任何地方使用它。您确定两种方法的方法参数都正确吗?getRandomint
0赞 ASwainy 9/7/2022
@OHGODSPIDERS我尝试过,但最后一直输入(int length),我没有意识到我没有输入类型。谢谢。非常感激。
0赞 tgdavies 9/7/2022
请将单元测试添加到您的问题中。
0赞 ASwainy 9/7/2022
@matt int 参数正在我此处提供的解决方案中使用。我无法更改参数,因为单元测试依赖于它。

答:

0赞 Riya 9/7/2022 #1

不要在函数中作为参数接收,而是采用 ArrayList。将 arraylist 传递给函数并返回从函数接收的值。lengthgetRandom()chosenWordsgetRandom()getRandom()

希望能有所帮助。

评论

0赞 9/7/2022
如果提问者没有指定“我无法更改我的方法的参数”,那么所有这些都是有道理的。
2赞 matt 9/7/2022 #2

显而易见的解决方案,如果 OP 还没有使用它?

public String getRandom(int length) {
    ArrayList<String> chosenWords = getChosenWords(length);
    Random random = new Random();
    int randomIndex = random.nextInt(chosenWords.size());
    return chosenWords.get(randomIndex);        
}

这样 selectsenWords 将被初始化。