2014-10-26 30 views
0

好吧,我已經成功地將列表轉換爲二維數組。唯一的問題是輸出只索引一次,所以基本上,如果每個列表中有10個要添加到二維數組中的元素,那麼二維數組將只有一個具有'n'個元素的索引。從列表中返回一個二維數組並不合適索引

例如

我想

{{1,2,3}, {4,5,6}, {7,8,9}} 

相反,它返回:

{1,2,3,4,5,6,7,8,9} 

我從建議: Convert ArrayList into 2D array containing varying lengths of arrays

這裏是我的代碼:

public static Object[][] getOrderCreateTestCases(){ 
    List<List<String>> list = new ArrayList<>(); 
    List<String> values = new ArrayList<>(); 
    try { 
     JSONArray jObject = (JSONArray)getClient().sendGet(String.format("get_cases/12&suite_id=136")); 
     for(Object obj : jObject){ 
      JSONObject jObj = (JSONObject)obj; 
      values.add(jObj.get("title").toString()); 
      values.add(jObj.get("id").toString()); 
      values.add(jObj.get("custom_order_type").toString()); 
      values.add(jObj.get("custom_product_type").toString()); 
      values.add(jObj.get("custom_free_shipping").toString()); 
      values.add(jObj.get("custom_billing_country").toString()); 
      values.add(jObj.get("custom_shipping_country").toString()); 
      list.add(values); 
      for(int i=0; i<list.size(); i++){ 
       valuesString = new Object[list.get(i).size()][]; 
       List<String> row = list.get(i); 
       valuesString[i] = row.toArray(new String[row.size()]); 
       //System.out.print(valuesString[i]); 
       break; 
      } 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (APIException e) { 
     e.printStackTrace(); 
    } 
    return valuesString; 
} 

我正在與DataProvidersTestNG一起工作,他們需要返回一個二維對象數組,我可以理解爲什麼。我正在解析出來自JSON數組(json-simple)的某些數據,將它添加到列表中,然後轉換爲二維數組。所以我們可以說它抓住從ID=5546的信息,那麼接下來id=4987,未來id=3847等..任何幫助,將不勝感激

更新中...

好了,所以我想我明白爲什麼它在做什麼它在做但我仍然不知道如何解決問題。所以基本上,它循環並開始新的一組數據,那麼它需要創建一個新的數組。

{{列表1},{列表2},{項目list3}}

+0

任何人...... ?????? – user2474976 2014-10-27 01:29:54

回答

1

我想getOrderCreateTestCases是您的數據提供者。 如果是這樣你可以這樣試試嗎?

public static Object[][] getOrderCreateTestCases() { 
    List<List<String>> list = new ArrayList<>(); 
    List<String> values = new ArrayList<>(); 

    try { 
     JSONArray jObject = (JSONArray) getClient().sendGet(
       String.format("get_cases/12&suite_id=136")); 

     for (Object obj : jObject) { 

      try { 

       JSONObject jObj = (JSONObject) obj; 
       values.add(jObj.get("title").toString()); 
       values.add(jObj.get("id").toString()); 
       values.add(jObj.get("custom_order_type").toString()); 
       values.add(jObj.get("custom_product_type").toString()); 
       values.add(jObj.get("custom_free_shipping").toString()); 
       values.add(jObj.get("custom_billing_country").toString()); 
       values.add(jObj.get("custom_shipping_country").toString()); 
       list.add(values); 
      } catch (Exception e) { 
       // Ignore 
      } 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (APIException e) { 
     e.printStackTrace(); 
    } 
    valuesString = new Object[list.get(i).size()][]; 

    for (int i = 0; i < list.size(); i++) { 
     List<String> row = list.get(i); 
     valuesString[i] = row.toArray(new String[row.size()]); 
    } 

    return valuesString; 
}