使用Method在ArrayLists中循环

时间:2013-03-13 21:30:45

标签: java methods multidimensional-array arraylist 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);
    }
}

问题是,当我尝试使用此功能在ArrayList的循环中将StringArrayList添加到另一个f()时,我收到错误消息说我可以'使用void,方法 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 } 无效。

ArrayList

让我再说一遍: 我想使用此函数将ArrayList个字谜插入另一个String中的每个位置。 anagram列表源自return; s,从一个列表读取到另一个列表。我尝试将方法更改为静态,但这不起作用,我也删除了方法中的{{1}}一次,但这也没有解决它。

如何使整个过程发挥作用?

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

F的方法标题需要如下所示:

public String f(String s, String anagram, ArrayList<String> array)

然后返回一个String值以添加到您正在使用的ArrayList中。

答案 2 :(得分:0)

f()的函数定义显示了void类型的返回值。所以看着你的代码,你试图这样做:

Lists.add(void);

这显然是非法的。

您的选择实际上是在更大的范围内声明ArrayList。

private List<String> anagrams;

public void f(String s, String anagram) {
  ...
  anagrams.add(anagram);
  ...
}

....

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