2016-05-04 6 views
0

Я пытаюсь упростить некоторый код Java, который я написал как первый проект, разделив его на классы. Я новичок в этом, так что я создал это ниже, но в отмеченной точке я продолжаю получать ошибки:Конструкторы классов не видны в классе

Syntax error on token ";", { expected after this token 

import java.util.ArrayList; 
import java.util.LinkedHashMap; 
import java.util.List; 
import java.util.Map; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class TxtExtr_AnatomyRegex { 
private String x; 
private Map<String,String> map= new LinkedHashMap<String,String>(); 
private String [] seAnatomy=null; 
private ArrayList<String> Anatomy_arr = new ArrayList<String>(); 
private ArrayList<List<String>> Anatomy_table2d = new ArrayList<List<String>>(); 
String el[]=null; 

    public TxtExtr_AnatomyRegex(String x,Map<String,String> map) { 
     // TODO Auto-generated constructor stub 
     x=this.x; 
     map=this.map; 
    } 
    Pattern Anatomy_pattern = Pattern.compile("Anatomy\\*(.*?Hiatal hernia[^\n]*)",Pattern.DOTALL); 
    Matcher matcherAnatomy_pattern = Anatomy_pattern.matcher(x); /////////////////////////////////ERROR IS HERE 

    while (matcherAnatomy_pattern.find()) { 
     seAnatomy=matcherAnatomy_pattern.group(1).split("\\n|\\r"); 
    } 

    for (int ise=0;ise<seAnatomy.length;ise++){ 
     Anatomy_arr.add(seAnatomy[ise]); 
    } 
    for (String ss:Anatomy_arr){ 
    ArrayList<String> tbb = new ArrayList<String>(); 
    el=ss.split("\\t"); 
     for (String e:el){ 
      if(!e.isEmpty()){ 
       tbb.add(e.trim()); 
      } 
     } 
      if(!tbb.isEmpty()){ 
      Anatomy_table2d.add(tbb); 
      for (int ff=0;ff<Anatomy_table2d.size();ff++){ 
        //Symptom 
       map.put("SumAnatomy"+Anatomy_table2d.get(ff).get(0),Anatomy_table2d.get(ff).get(1)); 
         } 
      } 
    } 
    System.out.println(Anatomy_table2d); 

} 
} 

Ценю я получаю много «читать о классах вас новичок» комментарии типа .. .. (и у меня есть только спасибо) .... но я думаю, проблема в том, что мне нужно поставить Matcher matcherAnatomy_pattern = Anatomy_pattern.matcher(x); в объявленные переменные. Это я сделал, чтобы получить еще одну ошибку, чтобы она не была видна. Какую фундаментальную концепцию мне не хватает?

ответ

1

Все, что вы написали после того, как ваш конструктор должен быть инкапсулирован в конструкторе или отдельными методами. Вы можете использовать ваш anatomy_pattern и т. Д. Как атрибуты вашего класса.

public class TxtExtr_AnatomyRegex { 
    private String x; 
    private Map<String,String> map= new LinkedHashMap<String,String>(); 
    private String [] seAnatomy=null; 
    private ArrayList<String> Anatomy_arr = new ArrayList<String>(); 
    private ArrayList<List<String>> Anatomy_table2d = new  ArrayList<List<String>>(); 
    String el[]=null; 
    Pattern Anatomy_pattern = null; 
    Matcher atcherAnatomy_pattern = null; 

    public TxtExtr_AnatomyRegex(String x,Map<String,String> map) { 
     // TODO Auto-generated constructor stub 
     x=this.x; 
     map=this.map; 

     Anatomy_pattern = Pattern.compile("Anatomy\\*(.*?Hiatal hernia[^\n]*)",Pattern.DOTALL); 
     matcherAnatomy_pattern = Anatomy_pattern.matcher(x); /////////////////////////////////ERROR IS HERE 

     //...put here your for and while stuff 

     }//end of the constructur 


     //... some methods ... you maybe also can do something of the loops in methods 

    } //end of the class 
1

Умеренно отформатированный код, в online java compiler IDE.

Проблема заключается в том, что структура управления, например, while, для и т. Д., Может присутствовать только внутри метода. В этом случае вы добавили его непосредственно в блок класса.

Оберните линии, которые следуют за конструктором внутри метода, затем он скомпилируется.

В качестве побочного примечания я бы посоветовал вам следовать руководству по стилю java-кодирования.

public class TxtExtr_AnatomyRegex { 
    private String x; 
    private Map<String,String> map= new LinkedHashMap<String,String>(); 
    private String [] seAnatomy=null; 
    private ArrayList<String> Anatomy_arr = new ArrayList<String>(); 
    private ArrayList<List<String>> Anatomy_table2d = new ArrayList<List<String>>(); 
    String el[]=null; 

    public TxtExtr_AnatomyRegex(String x, Map<String,String> map) { 
    // TODO Auto-generated constructor stub 
    x=this.x; 
    map=this.map; 
    } 

    public void doSomething() { 
    Pattern Anatomy_pattern = Pattern.compile("Anatomy\\*(.*?Hiatal hernia[^\n]*)",Pattern.DOTALL); 
    Matcher matcherAnatomy_pattern = Anatomy_pattern.matcher(x); 
    // and other code also here 
    } 
} 
Смежные вопросы