Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 逻辑缺陷:如果列表<;字符串>;是否为null返回输入或打印函数输出_Java_Null_Wordnet_Stemming_Data Processing - Fatal编程技术网

Java 逻辑缺陷:如果列表<;字符串>;是否为null返回输入或打印函数输出

Java 逻辑缺陷:如果列表<;字符串>;是否为null返回输入或打印函数输出,java,null,wordnet,stemming,data-processing,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) ); } 最后,我想把它写下来

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

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) );
}
最后,我想把它写下来:

this.verb = wordnet.getStem( verb );
我曾经听说过用空对象做一些事情,这在这里适用吗

我试过了,但没用,但我想做类似的事情:

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 );
}
public void getStem(字符串字)
{
wordnetstem=新的WordnetStemmer(dict);
列出有词干的单词=词干.findStems(单词,词性动词);
if(带词干的单词!=null)
System.out.println(词干单词.get(0));
其他的
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)
防止
包含
包含
线程“main”java.lang.IndexOutOfBoundsException中的异常:索引:0
位于java.util.Collections$EmptyList.get(Collections.java:4454)
在Weller.WordNet.getStem(WordNet.java:76)上
在推理机上,学习者。句子。(句子。java:23)
在推断时,使用learner.RegEx.match\u RegEx\u模式(RegEx.java:33)
在expertion\u learner.ReadFile.ReadFile(ReadFile.java:30)
at learner.Main.Main(Main.java:38)

这将不起作用,因为
列表
不是
null
,而
列表
是空的。 如果(词干单词.size()>0)

尝试,您必须像这样执行检查

if( stemmed_words != null && stemmed_words.size() > 0))
     System.out.println( stemmed_words.get(0) );
 else
     System.out.println( word );
}

什么对象是空的?如果
词干单词
为空,则上述方法是正确的。你还面临其他问题吗?@ScaryWombat我不知道,我刚刚发布了一条错误消息,你是从哪里知道某个东西是空的?我想,因为在调试器中,东西被初始化为空的,所以我认为如果没有任何东西放在上面,它仍然是空的。非常感谢。我认为@Titus是对的,但它将是空的,而不是空的Titus grando magna@Yamada_Tarō您应该实际使用if(stemmed_words.isEmpty())顺便说一句,stemmed_words不符合标准Java命名,您应该使用stemmedWords
if( stemmed_words != null && stemmed_words.size() > 0))
     System.out.println( stemmed_words.get(0) );
 else
     System.out.println( word );
}