java - 逻辑缺陷: if List<String> is null return input else print function output

标签 java null wordnet stemming data-processing

在我的代码中,我将此方法称为“词干”单词的预处理步骤:

public void getStem(String word)
{
    WordnetStemmer stem =  new WordnetStemmer( dict );

    List<String> stemmed_words = stem.findStems(word,  POS.VERB);
    System.out.println( stemmed_words.get(0) );
}

通常,如果得到一个正常的单词,一切都很好(我使用 Java Wordnet 接口(interface)来处理词干)。事情是-->我并不总是得到一个正常的单词,我得到的东西是沿着isa的思路的,它是isa的连词。在这种情况下,该方法将返回 null,并且我的程序将崩溃。我该如何防御?

这就是我调用该代码的方式:

public Sentence(String verb, String object, String subject ) throws IOException
{
    WordNet wordnet = new WordNet();

    this.verb = verb;
    this.object = object;
    this.subject = subject;

    wordnet.getStem( verb );
}

最终我希望读到:

this.verb = wordnet.getStem( verb );

我曾经听说过用 null 对象做一些事情,这适用于这里吗?

我尝试了这个,但没有成功,但是我想做这样的事情:

public void getStem(String word)
{
 WordnetStemmer stem =  new WordnetStemmer( dict );

 List<String> stemmed_words = stem.findStems(word,  POS.VERB);
 if( stemmed_words != null)
     System.out.println( stemmed_words.get(0) );
 else
     System.out.println( word );
}

这是输出:

prevent
contain
contain
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0
at java.util.Collections$EmptyList.get(Collections.java:4454)
at inference_learner.WordNet.getStem(WordNet.java:76)
at inference_learner.Sentence.<init>(Sentence.java:23)
at inference_learner.RegEx.match_regex_patterns(RegEx.java:33)
at inference_learner.ReadFile.readFile(ReadFile.java:30)
at inference_learner.Main.main(Main.java:38)

最佳答案

这不起作用,因为List不是nullList是空的。 您必须像这样进行检查 if (stemmed_words.size() > 0)

关于java - 逻辑缺陷: if List<String> is null return input else print function output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28229339/

相关文章:

r - 级别函数返回NULL

sql-server - SQL Server 中带 NULL 的 Count 函数的属性

mysql - 允许 float 在 mySQL 中为空值

java - 使用wordnet在java中查找单词的词根

java - 大型同义词集数据集中的 WordNetSimalarity

java - 如何使用 NetBeans 计算或确定用 Java 编写的程序的内存消耗?

java - 基于Hibernate生成包含关系的类图

java - 创建新的maven项目指南

java - 在google appengine后端仅运行一个后台线程

python - 如何在python nltk和wordnet中获取一个词/同义词集的所有下位词?