Java 打印数组列表时,只打印最后一个值

Java 打印数组列表时,只打印最后一个值,java,arrays,arraylist,Java,Arrays,Arraylist,我试图读取只有一列值的CSV文件,如 11111 22222 33333 44444 11111 22222 33333 44444 我可以读取文件,但当我打印的值仅打印最后一个值时,即44444。以下是我的代码,请帮助我获取列表中的所有值并打印:- import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException;

我试图读取只有一列值的CSV文件,如

11111 22222 33333 44444 11111 22222 33333 44444 我可以读取文件,但当我打印的值仅打印最后一个值时,即44444。以下是我的代码,请帮助我获取列表中的所有值并打印:-

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ReadCVS {

  public static void main(String[] args) {

    ReadCVS obj = new ReadCVS();
    obj.run();

  }

  @SuppressWarnings("unchecked")
public void run() {

    String csvFile = "/C:/Users/SONY/Desktop/Book1.csv";
    BufferedReader br = null;
    String line = "";
    String cvsSplitBy = ",";
    List<String[]> list=new ArrayList<String[]>();

    try {

        br = new BufferedReader(new FileReader(csvFile));
        String[] country = null ;
        while ((line = br.readLine()) != null) {

            country= line.split(cvsSplitBy);

            list.add(country);
            System.out.println(Arrays.toString(country));
        }

        for(int i = 0; i < country.length; i++) {
            System.out.println(Arrays.toString(country));             
        }


    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    System.out.println("Done");
  }

}
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.lang.reflect.Array;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
公共类ReadCVS{
公共静态void main(字符串[]args){
ReadCVS obj=新的ReadCVS();
obj.run();
}
@抑制警告(“未选中”)
公开募捐{
字符串csvFile=“/C:/Users/SONY/Desktop/Book1.csv”;
BufferedReader br=null;
字符串行=”;
字符串cvsSplitBy=“,”;
列表=新的ArrayList();
试一试{
br=新的BufferedReader(新的文件读取器(csvFile));
字符串[]country=null;
而((line=br.readLine())!=null){
国家=行分割(cvsSplitBy);
列表。添加(国家);
System.out.println(Arrays.toString(country));
}
对于(int i=0;i
问题在于,您正在第二个
for loop
中打印
country
,其中包含最后一列的值,在您的情况下,该值为
4444444

试试这样的

List<String[]> list = new ArrayList();
try {
    list.add(new String[]{"a","b"});
    list.add(new String[]{"c","d"});
    
    for (String[] str: list) {
        System.out.println(Arrays.toString(str));
    }
} catch (Exception e) {}    
List List=new ArrayList();
试一试{
添加(新字符串[]{“a”,“b”});
添加(新字符串[]{“c”,“d”});
for(字符串[]str:list){
System.out.println(Arrays.toString(str));
}
}捕获(例外e){}
输出:

[甲,乙]

[丙,丁]


这是一个试图模仿你的例子。根据您的要求进行更改。不要像我在上面的例子中那样让异常未捕获。

您应该打印出
列表
如果文件每行只有一个值,为什么要拆分该行?谢谢Sam,但当我打印列表时,它给我的是Ljava.lang.String@6e1408,[Ljava.lang.String;@e53108,[Ljava.lang.String;@f62373,请帮助更改我的代码列表List=new ArrayList();更改为List List=new ArrayList();我能够以字符串格式打印值。感谢Real怀疑论者指出我的错误,我从代码中删除了拆分行。