0

我想知道是否有人可以向我解释下面的代码行是做什么的?

while((sample = samples.read()) != null)

它是否首先设置sample为等于 的下一行samples,然后检查以确保它不为空?

这是一个更普遍的问题,但如果有人有一个很好的 OpenNLP 教程,我也会非常感激。

这是整个方法:

public static Dictionary buildNGramDictionary(ObjectStream samples, int cutoff) throws IOException {

    NGramModel ngramModel = new NGramModel();
    POSSample sample;

    while((sample = samples.read()) != null) {
        String[] words = sample.getSentence();
        if (words.length > 0)
            ngramModel.add(new StringList(words), 1, 1);
    }

    ngramModel.cutoff(cutoff, Integer.MAX_VALUE);
    return ngramModel.toDictionary(true);
}

4

2 回答 2

3
  1. 它将返回值samples.read()赋给sample变量
  2. 它验证是否sample不为空,然后才执行 while 循环的主体
于 2012-07-12T20:13:50.637 回答
2

表达式的计算由运算符优先级决定。
首先计算括号内的表达式,(sample = samples.read())因为()括号的优先级高于!=

于 2012-07-12T20:17:23.827 回答