2010-01-01 6 views
0

Im de php, donc je veux apprendre java. en php dans une boucle si je veux créer un tableau que je viens de faireGet Items Feeds4J Java Array

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

return $myarrayitems; 

Mais en java i got arrayoutofexponsion ou comme ça.

ici est le code im essayant

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; 

} 

Comment puis-je retourner titre sous forme de tableau un faire un var_dump de cela?

Répondre

1

Vous devez définir titre comme un tableau avant d'utiliser l'utiliser:

String title = new String[ARRAY_DIMENSION]; 

Si vous ne connaissez pas ARRAY_DIMENSION vous pouvez utiliser ceci:

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

ou cela, si cela ne vous dérange pas Ordre des chaînes dans l'ArrayList:

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

mais je ne sais pas quelle est la taille de array_dimension, donc je ne peux pas insérer un 10 ou 20 – streetparade

+0

@ streetparade: Oui vous l'avez, vous l'avez dans la variable 'items', sûrement ... –

2

Vous devez créer le tableau avec le bon nombre d'éléments pour commencer. Quelque chose comme ceci:

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;  
} 

cependant une alternative potentiellement plus agréable, est de retourner un List<String> au lieu d'un tableau de chaînes. Je ne sais pas l'API FeedParser, mais si vous pouvez parcourir les articles au lieu que vous pourriez faire quelque chose comme:

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;  
} 

Cela fonctionnera même si vous ne savez pas combien d'articles il y a pour commencer. Lorsque Java obtient finalement des fermetures concises, vous pouvez très bien l'exprimer encore plus simplement, comme vous le feriez en C# avec LINQ :)

+0

merci Jon pour l'aide. – streetparade