2015-04-04 52 views
0

我有一個ArrayList在我的課開始轉換/從ArrayList中複製到對象數組

private ArrayList<Dog> dogs; 

這狗是如何在狗類中聲明

public Dog(String name, ArrayList<Owner> owners, boolean likeBones, String food, 
     int mealsPerDay); 

我試圖找到那些喜歡骨頭的狗,並把這條狗變成結果。其餘的代碼工作正常,包括.getLikesBones()。

Dog[] result = null; 
for (Dog dogSearch : dogs) { 

     if (dogSearch.getLikesBones()){ 
      result =dogSearch; //I know this won't work, just simply showing what I want. 
     } 



    } 
    return result; 
} 

非常感謝您的幫助。

+1

它沒有工作不是一個很好的解釋你的問題...你是否得到一個nullpointerexception權利?想想看。 – 2015-04-04 16:36:46

+2

聽起來像一個功課問題。你可能應該試着去實現你到目前爲止所研究的東西。 – RealSkeptic 2015-04-04 16:37:12

回答

1

由於您可能不知道result大小。因此,result應該聲明爲ArrayList而不是數組。看下面的代碼。

List<Dog> result = new ArrayList<>(); 

將搜索值添加到result

for (Dog dogSearch : dogs) { 
    if (dogSearch.getLikesBones()){ 
    result.add(dogSearch); 
    } 
} 
0

您可以使用,而不是使用數組

List<Dog> result = new ArrayList<Dog>(); 
for (Dog dogSearch : dogs) { 
     if (dogSearch.getLikesBones()){ 
      result.add(dogSearch); 
     } 
    } 
    return result; 
} 
+0

非常感謝你的工作。只需要將方法更改爲public List 並且必須導入java.util.List; – Unfitacorn 2015-04-04 16:57:14

0

這將是更好,如果你改變Dog[] resultList<Dog> result = new ArrayList<>(),所以你可以不用擔心上爲固定大小初始化數組添加數據集。

您的代碼應該是這樣的:

List<Dog> result = new ArrayList<>(); 
for (Dog dogSearch : dogs) { 
    if (dogSearch.getLikesBones()){ 
     result.add(dogSearch); 
    } 
} 
return result; 

如果你仍然需要在return語句返回Dog[]而非List<Dog>,然後調用List#toArray

return result.toArray(new Dog[result.size()]); 
0

你必須做的2種方式這個。您已在代碼頂部聲明regular array of Dogs

要做到這一點與regular array你需要聲明一個int來保存數組的索引,因爲沒有常規數組的「添加」功能。因此,這將是:

Dog[] result = new Dog[dogs.lenght()]; 
int index = 0; 
for (Dog dogSearch : dogs) { 

     if (dogSearch.getLikesBones()){ 
      result[index] = dogSearch; 
      index++; 
     } 
    } 
    return result; 
} 

以其它方式使用狗的數組列表的「結果」,只是做

arrayList.Add(dogSearch);

+0

未能爲結果數組分配內存。 – CandiedOrange 2015-04-04 16:39:33

+0

如何初始化一個數組? – 2015-04-04 16:39:41

+0

hmm ..我認爲這是一種聲明數組而不指定大小的方法......現在看 – 2015-04-04 16:42:16

0
ArrayList<Dog> result = new ArrayList<Dog>(); 
for (Dog dogSearch : dogs) { 

    if (dogSearch.getLikesBones()){ 
     result.put(dogSearch); 
    } 

} 
return result; }