2016-05-01 9 views
0

in Ordnung, so ist es hier der vollständige CodeWie ein tun, wenn wir eine Arraylist von Strings java haben

public static ArrayList<String> procuraGeneroLiterario(String nome_escritor) throws IOException{ 
    String link = "https://pt.wikipedia.org/wiki/" + nome_escritor; 
    String pesquisa =""; 
    ArrayList<String> GeneroLiterario = new ArrayList(); 
    HttpRequestFunctions.httpRequest(link,pesquisa,"ESCRITORES.txt"); 
    String GenLit_er0 = "<td scope=\"row\" style=\"vertical-align: top; text-align: left; font-weight:bold; padding:4px 4px 4px 0\">Gênero(s)</td>"; 
    String GenLit_er = "<a href=\"/wiki/.+ title=\".+\">(.+)</a>"; 

    String Genero = null; 
    Scanner ler = new Scanner(new FileInputStream("ESCRITORES.txt")); 
    Pattern p0 = Pattern.compile(GenLit_er0); 
    Pattern p = Pattern.compile(GenLit_er); 


    while (ler.hasNextLine()) { 
     String linha = ler.nextLine();    
     Matcher f = p0.matcher(linha); 
     if(f.find()){ 
      //linha = ler.nextLine(); 
      while(ler.hasNextLine()){ 
       linha = ler.nextLine();     
       Matcher m = p.matcher(linha); 

       if(m.find()){ 

        Genero = m.group(1); 
        if (Genero != null){ 
         for(int i = 0; i < Genero.size(); i++){ 
          GeneroLiterario.add(Genero); 
        break; 
         } 


        } 



       } 


      } 


     } 
    } 
    ler.close(); 
    return GeneroLiterario; 


} 

mein Lehrer mir jetzt zu tun, sagte aber nur, wenn GeneroLiterario wird als Arraylist erklärt.

System.out.println("LISTA DE GeneroLiterarios: "); 
    for (int i=0; i<this.GeneroLiterarios.size(); i++) 
     System.out.println(this.GeneroLiterarios.get(i)); 

Ich habe eine Klasse gemacht und da ist der GeneroLiterario ein String. Muss ich es in Arraylist ändern? Ursache der Ausgang wird eine Arraylist der Zeichenfolgen sein. und jetzt ist der Ausgang [].

+3

'java.lang.String' nicht über Methode' size() '. Meinst du 'length()'? – MikeCAT

+0

Ich verstehe nicht, was Sie genau machen wollen. Sie durchlaufen nun die Zeichen von Genero (wenn Sie 'size()' in 'length()' ändern, wie es @MikeCAT vorschlägt), und für jedes Zeichen fügen Sie 'GeneroLiterario' die vollständige Zeichenkette hinzu? – Rick

+0

Es ist einfach zu verstehen, wenn Sie den vollständigen Code hier posten .. –

Antwort

0

Ich vermute, dass Sie RE (regex) statt ER, und dass m ist eigentlich eine Matcher Instanz. In diesem Fall haben Sie die Methode Matcher.group(int) falsch verstanden. Diese Methode gibt eine String keine List<String> zurück. Aus diesem Grund erhalten Sie einen Kompilierungsfehler, der besagt, dass String keine size()-Methode hat.

Wenn Sie versuchen, alle der aufeinander abgestimmten Gruppen GeneroLiterario hinzufügen möchten, dann sollten Sie dieses:

if (m.find()) {    
    for (int i = 1; i <= m.groupCount(); i++) { 
     if (m.group(i) != null) { 
      GeneroLiterario.add(m.group(i)); 
     } 
    } 
}