2013-08-02 126 views
1

com.itextpdf.text.DocumentException:java.lang.ArrayStoreException如何存儲在字符串數組數組列表值

Q.當嘗試下面的代碼,其試圖改變的ArrayList爲String []上面的數組類型異常發生了。我不知道什麼是錯的。

try { 
       Class.forName("com.mysql.jdbc.Driver"); 

     String url ="jdbc:mysql://localhost/falg_check"; 
     con = DriverManager.getConnection(url,"root", "root"); 
     stmt = con.createStatement(); 
     rs4 = stmt.executeQuery("SELECT * from records"); 
     String[] arrayOfStrings;   
     ArrayList<String[]> name=new ArrayList<String[]>(); 
     while(rs4.next()){ 
      String insert =rs4.getString("name"); 
      final String[] res={insert};     
      name.add(res);             
     } 
     //Object[] x=name.toArray(); 


arrayOfStrings = name.toArray(new String[name.size()]); //<--------------- 
     } 
     catch(Exception e) { 
      System.out.println(ioe); 
      throw new ExceptionConverter(ioe); 
     } 

EDIT: * 我有一個維陣列的要求,這樣我可以把那些值text.setChoices(arrayOfStrings);它通過JAVA在PDF文件的下拉菜單中設置選項。 *

編輯:怎麼了不是重複:

我想ArrayList的改變這是不符合計算器上的任何問題的情況下與字符串數組引用的類型。而且我也想要單維數組。理解二維int數組和線性字符串數組之間的區別並不難。可能是與其他幾種類型的投射問題相匹配的概念,但它是部分/有條件地不同的問題。

回答

3

您已經定義

ArrayList<String[]> name=new ArrayList<String[]>() 

當你調用name.toArray(),你原來的列表中包含的類型元素的數組。由於您的列表包含String[]實例,因此name.toArray()返回String[][],即字符串陣列的數組,而不是字符串數組。

因此,無論是你確實有數組字符串數組的工作:

String[][] arrayOfStrings; 
... 
arrayOfStrings = name.toArray(new String[name.size()][]); 

或者你將獲得一個字符串列表,而不是字符串數組列表的工作:

ArrayList<String> name=new ArrayList<String>(); 
while(rs4.next()) 
{ 
    String insert = rs4.getString("name"); 
    name.add(insert); 
} 

或者在轉換爲數組之前,將字符串數組列表展平爲字符串列表:

String[] arrayOfStrings; 
ArrayList<String[]> name = new ArrayList<String[]>(); 
while(rs4.next()) 
{ 
    String insert = rs4.getString("name"); 
    final String[] res={insert}; 
    name.add(res); 
} 
.... 
ArrayList<String> intermediate = new ArrayList<String>(); 
for (String[] stringArray: name) 
{ 
    if (stringArray != null) 
    { 
     intermediate.addAll(java.util.Arrays.asList(stringArray)); 
    } 
} 
arrayOfStrings = intermediate.toArray(new String[name.size()]); 
+0

這就是我所需要的.Bul LS-眼 –

相關問題