使用方法在ArrayList中循环



在很多帮助下,我开发了一种制作变位词的方法,然后将它们添加到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);
    }
}

问题是,当我试图在一个将Strings从一个ArrayList添加到另一个的循环中使用此函数来生成ArrayLists时,我收到一个错误,说我不能使用void,并且方法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。我尝试将该方法更改为静态,但不起作用,我还删除了该方法中的return;一次,但也无法修复它。

我该如何让这一切正常工作?

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

调用f()的答案存储在作为参数传递给fArrayList中,您可能应该使用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);
}

F的方法头需要如下所示:

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

然后返回一个String值,将其添加到正在使用的ArrayList中。

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
 }

相关内容

  • 没有找到相关文章

最新更新