我目前正在拼命地尝试将一个从函数返回的ArrayList转换为我的main函数中的新ArrayList ...
以下是代码段:
public static ArrayList<String> permute(String begin, String end) {
ArrayList<String> al=new ArrayList<String>();
//filling bla
return al;
}
这是我在main函数中调用函数的地方:
ArrayList<String> arr =permute("","abc");
不幸的是,arr是空的,我不知道如何让它工作:(
提前致谢
编辑: 这是完整的代码:
import java.util.*;
class Problem24 {
public static ArrayList<String> permute(String begin, String end) {
ArrayList<String> al=new ArrayList<String>();
if (end.length() <= 1) {
String s=begin+end;
al.add(s);
} else {
for (int i = 0; i < end.length(); i++) {
try {
String newString = end.substring(0, i) + end.substring(i + 1);
permute(begin + end.charAt(i), newString);
} catch (StringIndexOutOfBoundsException exception) {
exception.printStackTrace();
}
}
}
return al;
}
public static void main (String[] args)
{
ArrayList<String> arr =permute("","abc");
System.out.println(arr.get(0));
}
}
答案 0 :(得分:2)
您的ArrayList为空但不为null,这意味着返回的部分有效。在oder中使用方法中的值需要填充方法内的ArrayList。
ps:你应该使用List list = new ArrayList()或 列表列表= permute(“”,“abc”),这是依赖注入的简单版本和更好的程序设计。
答案 1 :(得分:1)
在返回值之前,请确保填写al
列表
al.add(begin);
al.add(end);
al.add("any other string");
return al;
答案 2 :(得分:1)
显然// filling bla
部分有问题。
我首先将// filling bla
中的代码替换为al.add("TEST");
,然后查看是否有任何问题。
此外,您的方法是静态的,并且未传入源数组,这表明您的代码应该以某种方式置换这些字符串。您是否可能在静态数组上进行操作(即在开始和结束之间置换所有元素),并且源数组是空的?
答案 3 :(得分:1)
您没有添加递归调用中的项目。
尝试将al.addAll添加到您的置换调用中:
al.addAll(permute(begin + end.charAt(i), newString));
答案 4 :(得分:0)
import java.util.*;
class Problem24
{
public static ArrayList<String> permute(String begin, String end)
{
ArrayList<String> al=new ArrayList<String>();
if (endingString.length() <= 1)
{
String s=begin+end;
al.add(s);
}
else
{
for (int i = 0; i < end.length(); i++)
{
try
{
String newString = end.substring(0, i) + end.substring(i + 1);
al.add(permute(begin + end.charAt(i), newString));
}
catch (StringIndexOutOfBoundsException exception)
{
exception.printStackTrace();
}
}
}
return al;
}
public static void main (String[] args)
{
ArrayList<String> arr = permute("","abc");
System.out.println(arr.get(0));
}
}
希望我以正确的方式纠正它。
答案 5 :(得分:0)
你反复调用你的方法 - 但你没有使用它返回时返回的内容。换句话说,每次调用permute时都会创建一个新数组,但是你在for循环中获得的所有东西都会丢失,因为你没有将它传递给下一个permute()调用 - 最终你返回一个空数组,你在其中没有放任何东西。