【问题标题】:How to pass the ArrayList between methods and classes?如何在方法和类之间传递 ArrayList?
【发布时间】:2016-05-11 07:00:30
【问题描述】:

我有这个方法返回一个 arrayList 标记:

public static String[] Tokenize(String input) throws InvalidFormatException, IOException {
    InputStream is = new FileInputStream("en-token.bin");    
    TokenizerModel model = new TokenizerModel(is);   
    Tokenizer tokenizer = new TokenizerME(model);    
    String tokens[] = tokenizer.tokenize(input);     
    for (String a : tokens)
        System.out.println(a);   
    is.close();
    return tokens;
}

我希望这些令牌用于另一种方法:

public static void findName(String[] input) throws IOException {
    InputStream is = new FileInputStream("en-ner-person.bin");   
    TokenNameFinderModel model = new TokenNameFinderModel(is);
    is.close();  
    NameFinderME nameFinder = new NameFinderME(model);   
    Span nameSpans[] = nameFinder.find(input);   
    for(Span s: nameSpans)
        System.out.println(s.toString());           
}

另外,我怎样才能在另一个类中使用这个标记 arrayList,例如,

public class Main{
    public static void main( String[] args) throws Exception
    {
        Anotherclass.Tokenize(input);
        Anotherclass.findName(tokens);

    }
}

我无法弄清楚这一点!请帮帮我。

非常感谢!

【问题讨论】:

  • 调用那个Tokenize()并使用它
  • 你在哪里声明了 ArrayList?
  • 你的方法返回的不是ArrayList对象而是一个字符串数组;它们是不同的。只需为您的方法 String[] tokens 声明一个新的输入参数并将其用于您的代码。
  • ^^ 这里:字符串令牌[] = tokenizer.tokenize(input);

标签: java arrays string arraylist opennlp


【解决方案1】:

就用这个吧:

Anotherclass.findName(Anotherclass.Tokenize(input));

【讨论】:

  • 但它没有给出 findName 方法的任何输出。这是为什么呢?
  • 有没有办法可以在 findName 方法本身中使用 tokens[]?
  • 您可以将 findName 的返回类型从 void 更改为 Span 数组,即 Span[],然后您可以使用该数组并在 main 方法中创建一个 for 循环来做任何您想做的事情。
【解决方案2】:

您必须将第一种方法的结果重新使用到第二种方法中。

public class Main{
     public static void main( String[] args) throws Exception
     {
         String[] tokens = Anotherclass.Tokenize(input);
         Anotherclass.findName(tokens);

     }
}

你仍然需要弄清楚你的 input 变量来自哪里。

【讨论】:

  • 它没有给出 findName 方法的任何输出。这是为什么呢?
  • 有没有办法可以在 findName 方法本身中使用 tokens[]?
【解决方案3】:

您创建了静态方法,因此您可以通过类名调用这些方法,例如

String[] SAMPLEARRAY = YOURCLASSNAME.Tokenize(String_ARRAY);

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    相关资源
    最近更新 更多