2010-01-01 94 views
0

從PHP的Im,所以我想學習Java。 在一個PHP for循環,如果我想創建一個數組我只是做獲取項目Feeds4J Java Array

$items = $this->getItems(); 
for($i=0;$i<count($items);$i++) 
{ 
$myarrayitems[$i] = $items[$i]; 
} 

return $myarrayitems; 

但在Java中,我得到arrayoutofexponsion或類似的。

這裏是代碼即時試圖

public String[] getItems(String url) throws Exception 
{ 
URL rss = new URL(url); 
Feed feed = FeedParser.parse(rss); 
int items = feed.getItemCount(); 
int a = 0; 

for (int i = 0; i < items; i++) 
{ 
FeedItem item = feed.getItem(i); 
String title[i] = item.getTitle(); 
} 

return title; 

} 

我怎樣才能返回標題作爲陣列的做的,一個的var_dump?

回答

1

你必須定義標題作爲陣列使用,用前:

String title = new String[ARRAY_DIMENSION]; 

如果你不知道ARRAY_DIMENSION你可以這樣做:

List<String> title = new ArrayList<String>(); 

或本,如果您不介意ArrayList中的字符串順序:

Collection<String> title = new ArrayList<String>(); 
+0

但我不知道array_dimension有多大,所以我不能插入10或20 – streetparade 2010-01-01 21:49:52

+0

@ streetparade:是的,你已經在'items'變量中得到了它,當然... – 2010-01-01 21:51:20

2

您需要創建具有適當數量的元素的數組以開始。是這樣的:

public String[] getItems(String url) throws Exception 
{ 
    URL rss = new URL(url); 
    Feed feed = FeedParser.parse(rss); 
    int items = feed.getItemCount(); 
    // We know how many elements we need, so create the array 
    String[] titles = new String[items]; 

    for (int i = 0; i < items; i++) 
    { 
     titles[i] = feed.getItem(i).getTitle(); 
    } 

    return titles;  
} 

一個潛在的更好的替代方案,但是,是返回一個List<String>而不是字符串數組。我不知道FeedParser API,但如果你能在項目迭代,而不是你可以這樣做:

public List<String> getItems(String url) throws Exception 
{ 
    URL rss = new URL(url); 
    Feed feed = FeedParser.parse(rss); 
    List<String> titles = new ArrayList<String>(); 
    for (Item item : feed) 
    { 
     titles.add(item.getTitle()); 
    }  
    return titles;  
} 

這會工作,即使你不知道有多少項目開始。當Java最終得到簡潔的關閉時,你可能會更簡單地表達這一點,就像你在C#中使用LINQ一樣:)

+0

感謝Jon的幫助。 – streetparade 2010-01-01 21:58:26