2015-03-03 77 views
-3

我想打印在Java中,但我的输出项目的列表如下:打印列表中的Java

[[Ljava.lang.String;@4381e9f2, [Ljava.lang.String;@1905afa3, [Ljava.lang.String;@60a9b10, [Ljava.lang.String;@38e9f02a] 

程序读取一个CSV文件与项目:

one 
two 
tree 
four 

一个项目是在.csv文件的一行

我的问题:我怎样才能得到正常的输出与一,二,树,四,不喜欢在第一行的东西? .toString不起作用。

看,这是我的代码:

try { 
     CSVReader csvread = new CSVReader(new FileReader("test.csv")); 
     List myEntries = csvread.readAll(); 
     System.out.println(myEntries.toString()); 
     } 
     catch (FileNotFoundException e1) { 
      System.out.println("File not found!"); 
      e1.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

你尝试打印myEntries对象,你必须打印所有的项目与for循环或类似的东西。 – vincent 2015-03-03 09:57:17

+0

['csvread.readAll()'](http://opencsv.sourceforge.net/apidocs/au/com/bytecode/opencsv/CSVReader.html#readAll%28%29)返回'List ',所以不要'如果您已经知道使用的泛型类型,则使用原始列表类型。 [然后做一些关于如何打印数组的研究](http://stackoverflow.com/questions/27320396/java-prints-array-memory-address-rather-than-array-contents)。 – Tom 2015-03-03 09:59:05

+0

好吧,一会儿,我会测试这个.. – lukas22497 2015-03-03 10:07:21

回答

2

要打印的对象。

您需要迭代列表并打印所有这些成员。

要迭代并打印列表的成员,你可以这样做:

Iterator<String[]> it= myEntries .iterator(); 
while (it.hasNext()) { 
    String[] strArray = it.next(); 
    for(String str: strArray) 
     System.out.println(str); 
} 
+0

不是?所以...什么是? – 2015-03-03 10:06:14

+0

我得到了像我的帖子一样的输出.. – lukas22497 2015-03-03 10:12:17

+0

我改变了我的代码。尝试这个! – 2015-03-03 10:18:37

-1

@若昂·马科斯

此代码是在情况下你修改一点点。

 CSVReader csvread = new CSVReader(new FileReader("test.csv")); 
     Iterator<String[]> myEntries = csvread.readAll().iterator(); 
     while (myEntries.hasNext()) { 
      String[] strArray = myEntries.next(); 
      for(String str: strArray) 
       System.out.println(str); 
     } 

它的工作原理非常好!感谢您的帮助。我现在明白我的代码! :)