Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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_String Split - Fatal编程技术网

Java 无法输出ArrayList内容

Java 无法输出ArrayList内容,java,arraylist,string-split,Java,Arraylist,String Split,我正在读取一个txt文件,其中每行包含一个单词,从非字母数字字符中剥离该单词,并将结果存储到数组列表中 public class LeeArchivo { public static void main(String args[]) throws IOException { try { BufferedReader lector = null; List<String> matrix = new ArrayList&

我正在读取一个txt文件,其中每行包含一个单词,从非字母数字字符中剥离该单词,并将结果存储到数组列表中

public class LeeArchivo 
{   

public static void main(String args[]) throws IOException
{
    try
    {   

        BufferedReader lector = null;
        List<String> matrix  = new ArrayList<String>();

        lector = new BufferedReader(new FileReader("spanish.txt"));
        String line = null;

        while((line = lector.readLine())!=null)
        {
            //matrix.add(line);
            matrix.add((line.split("[^a-zA-Z0-9']").toString()));     
        }   

        System.out.println(matrix);
        System.out.println(matrix.size());
    } catch (IOException e)
    {
        e.printStackTrace();
    }

}
}
公共类LeeArchivo
{   
公共静态void main(字符串args[])引发IOException
{
尝试
{   
BufferedReader选择器=null;
列表矩阵=新的ArrayList();
lector=new-BufferedReader(新的文件阅读器(“西班牙语.txt”);
字符串行=null;
而((line=lector.readLine())!=null)
{
//矩阵。添加(行);
矩阵.add((行.split([^a-zA-Z0-9'])).toString());
}   
系统输出打印LN(矩阵);
System.out.println(matrix.size());
}捕获(IOE异常)
{
e、 printStackTrace();
}
}
}
当我试图打印ArrayList的内容时,我得到的只是每个String对象的内存地址。有趣的是,如果我不拆分行,即:我只是矩阵。添加(行)我得到字符串Ok。 我尝试过StringBuilder、迭代器、.toString,但都不管用。 有人能帮我了解这里发生了什么吗? 谢谢。

行.split([^a-zA-Z0-9'])调用返回字符串数组。不是一串。 因此,您不是在向数组列表中添加字符串实例,而是将字符串数组对象添加到String()方法调用的结果—字符串数组对象的内存地址

如果需要在拆分后获取整个字符串,则应将所有 数组的元素,例如:

while((line = lector.readLine())!=null) {

    String[] arr = line.split("[^a-zA-Z0-9']");
    String res = "";

    for(String s : arr) {
        res += s;
    }

    matrix.add(res);    
}

为什么要在add方法中添加一组额外的参数?谢谢,我现在明白了。但是,如果我不调用toString()方法调用,我会在矩阵中得到一个错误。add()表示:类型列表中的add(String)方法不适用于参数(String[]),我该怎么做呢?知道了。为什么toString()仍然在拆分之后?@Rob Right you。我的错。更正。