Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用返回的ArrayList_Java_Arraylist - Fatal编程技术网

Java 使用返回的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排列(字符串开始,字符串结束){

我目前正在拼命地尝试获取一个ArrayList,我从一个函数返回到主函数中的一个新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说了什么。无论你有什么代码,都不会将任何内容放入列表中。请发布其余代码。