使用Method在ArrayLists中循环

Rya*_*tts 2 java methods arraylist multidimensional-array anagram

在很多帮助下,我开发了一种制作字谜的方法,然后将它们添加到一个ArrayList.

public void f(String s, String anagram, ArrayList<String> array)
{
    if(s.length() == 0)
    {
        array.add(anagram);
        return;
    }
    for(int i = 0 ; i < s.length() ; i++)
    {
        char l = s.charAt(i);
        anagram = anagram + l;
        s = s.substring(0, i) + s.substring(i+l, s.length());
        f(s,anagram,array);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试使用此函数ArrayList在循环中将s添加String到一个ArrayList到另一个时,我得到一个错误,说我不能使用void,并且该方法f()是无效的.

        List<String> Lists = new ArrayList<String>(); //makes new array list
        for(String List : words)
        { //takes values from old array list
            List.trim();
            Lists.add(f(List,"",new ArrayList<String>())); //this is where it doesn't work
        }
Run Code Online (Sandbox Code Playgroud)

让我再一次澄清:我想用这个函数将ArrayListanagrams插入另一个中的每个位置ArrayList.anagram列表源自String从一个列表到另一个列表的s.我尝试将方法更改为静态,但这不起作用,我也删除return;了方法一次,但这也没有解决它.

我如何使这整件工作?

Ósc*_*pez 7

发生错误f()是因为该方法是void,意思是:它不返回任何可以添加到的值ArrayList.

调用的答案f()存储在ArrayList作为参数传递给f,你应该使用 ArrayList来添加它的所有元素Lists.像这样的东西:

List<String> lists = new ArrayList<String>();
for (String list : words) {
    list.trim();
    ArrayList<String> answer = new ArrayList<String>();
    f(list, "", answer);
    lists.addAll(answer);
}
Run Code Online (Sandbox Code Playgroud)