繁体   English   中英

类构造函数在类中不可见

[英]Class constructors not visible in class

我试图通过将它们划分为类来简化我作为第一个项目编写的一些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); 在声明的变量中。 我这样做只是为了得到另一个不可见的错误。 我在这里缺少什么基本概念?

在构造函数之后编写的所有内容都必须包含在构造函数或单独的方法中。 您可以使用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

在线java编译器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
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM