2015-03-03 74 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); 
     } 

它的工作原理非常好!感謝您的幫助。我現在明白我的代碼! :)