2016-05-01 29 views
0

大丈夫文字列のJavaのArrayListのを持っているときのために行うためにどのようにここではは、我々は

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; 


} 

先生が今やってますがGeneroLiterarioはArrayListのように宣言されている場合にのみ、私に言った完全なコードです。

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

私はクラスを作成し、GeneroLiterarioはStringです。 arraylistに変更する必要がありますか? の場合、出力は文字列のarraylistになります。 となり、出力は[]になります。

+3

'java.lang.String'はメソッド'サイズを() 'はありません。 'length()'を意味しますか? – MikeCAT

+0

私はあなたが何をしようとしているのか正確には分かりません。 Generoの文字を繰り返しています(@MikeCATのように 'size()'を 'length()'に変更した場合)、文字ごとに 'GeneroLiterario'に完全な文字列を追加しますか? – Rick

+0

ここに完全なコードを投稿すれば分かりやすい –

答えて

0

ERよりもRE(正規表現)を意味すると思いますが、mは実際にはMatcherのインスタンスです。

この場合、Matcher.group(int)メソッドが誤解されています。そのメソッドは、ではなくStringを返します。そのため、Stringにはsize()メソッドがないというコンパイルエラーが発生しています。

あなたはGeneroLiterarioにマッチしたグループのすべてを追加しようとしている場合、あなたはおそらくこれ欲しい:

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