Java 使用返回的ArrayList
我目前正在拼命地尝试获取一个ArrayList,我从一个函数返回到主函数中的一个新ArrayList中 以下是代码片段:Java 使用返回的ArrayList,java,arraylist,Java,Arraylist,我目前正在拼命地尝试获取一个ArrayList,我从一个函数返回到主函数中的一个新ArrayList中 以下是代码片段: public static ArrayList<String> permute(String begin, String end) { ArrayList<String> al=new ArrayList<String>(); //filling bla return al; } 公共静态ArrayList排列(字符串开始,字符串结束){
public static ArrayList<String> permute(String begin, String end) {
ArrayList<String> al=new ArrayList<String>();
//filling bla
return al;
}
公共静态ArrayList排列(字符串开始,字符串结束){
ArrayList al=新的ArrayList();
//填充bla
返回al;
}
这里是我调用主函数中的函数的地方:
ArrayList<String> arr =permute("","abc");
ArrayList 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));
}
}
import java.util.*;
课堂问题24{
公共静态ArrayList排列(字符串开始,字符串结束){
ArrayList al=新的ArrayList();
如果(end.length()在返回值之前,请确保您正在填写al
列表
al.add(begin);
al.add(end);
al.add("any other string");
return al;
返回值之前,请确保您正在填写al
列表
al.add(begin);
al.add(end);
al.add("any other string");
return al;
显然,//填充bla
部分有问题
首先,我将用al.add(“TEST”);
替换您在//中的代码,然后看看您是否得到了一些东西
此外,您的方法是静态的,并且源数组没有传入,这表明您的代码应该以某种方式排列这些字符串。您是否可能对静态数组进行操作(即排列开始和结束之间的所有元素),并且源数组为空?显然//填充bla
部分有问题
首先,我将用al.add(“TEST”);
替换您在//中的代码,然后看看您是否得到了一些东西
此外,您的方法是静态的,并且源数组没有传入,这表明您的代码应该以某种方式排列这些字符串。您是否可能对静态数组进行操作(即排列开始和结束之间的所有元素),并且源数组为空?您的ArrayList为空但不为null,这意味着返回的部分工作正常。为了使用方法中的值,您需要在方法中填充ArrayList
ps:应该使用List List=new ArrayList()或
List List=permute(“,”abc”),这是依赖项注入的一个简单版本,也是程序的一个更好的设计。您的ArrayList是空的,但不是空的,这意味着返回的部分起作用。为了使用方法中的值,您需要在方法中填充ArrayList
ps:应该使用List List=new ArrayList()或
List List=permute(“,“abc”),这是依赖项注入的一个简单版本,也是程序的更好设计。您没有从递归调用中添加项
尝试将al.addAll添加到您的置换呼叫:
al.addAll(permute(begin + end.charAt(i), newString));
您没有添加递归调用中的项
尝试将al.addAll添加到您的置换呼叫:
al.addAll(permute(begin + end.charAt(i), newString));
import java.util.*;
课堂问题24
{
公共静态ArrayList排列(字符串开始,字符串结束)
{
ArrayList al=新的ArrayList();
if(endingString.length()import java.util.*;
课堂问题24
{
公共静态ArrayList排列(字符串开始,字符串结束)
{
ArrayList al=新的ArrayList();
如果(endingString.length()您反复调用您的方法permute,但在它返回时不使用它返回的内容。换句话说,您每次调用permute时都会创建一个新数组,但在循环中得到的所有内容都会丢失,因为您没有将它传递给下一个permute()调用---最终返回一个空数组,其中没有放入任何内容。您反复调用方法permute---但在它返回时您不使用它返回的内容。换句话说,每次调用permute时您都会创建一个新数组,但在for循环中得到的所有内容都会丢失,因为您没有将它传递给下一个permute()调用---最终返回一个空数组,其中没有放入任何内容。可能是//填充bla
部分出错。如果不给出代码,就无法判断到底是什么错误。是否在al中填充了任何内容?看起来像是“填充bla”没有填充al ArrayList。你应该在那里查找问题,其余的代码看起来很好。问题肯定不在你发布的代码部分。发布你是如何填充列表的。gefei说了什么。无论你有什么代码,都不会将任何内容放入列表中。请发布其余的代码。可能是//filling bla代码>部分错误。如果你不提供代码,就没有机会知道到底是什么错误。你在al中填充了什么吗?看起来像是“填充bla”没有填充al ArrayList。你应该在那里查找问题,其余代码看起来很好。问题肯定不在你发布的代码部分。发布你是如何填充列表的。gefei说了什么。无论你有什么代码,都不会将任何内容放入列表中。请发布其余代码。