{"record":{"id":"36ec35623b978066","repo":"stanfordnlp/CoreNLP","slug":"crossvalidatoriterator-exhausted","errorCode":null,"errorMessage":"CrossValidatorIterator exhausted.","messagePattern":"CrossValidatorIterator exhausted\\.","errorType":"exception","errorClass":"NoSuchElementException","httpStatus":null,"severity":"error","filePath":"src/edu/stanford/nlp/classify/CrossValidator.java","lineNumber":75,"sourceCode":"    return sum / kFold;\n  }\n\n\n  class CrossValidationIterator implements Iterator<Triple<GeneralDataset<L, F>,GeneralDataset<L, F>,SavedState>> {\n\n    private int iter = 0;\n\n    @Override\n    public boolean hasNext() { return iter < kFold; }\n\n    @Override\n    public void remove() {\n      throw new UnsupportedOperationException(\"CrossValidationIterator doesn't support remove()\");\n    }\n\n    @Override\n    public Triple<GeneralDataset<L, F>,GeneralDataset<L, F>,SavedState> next() {\n      if (iter == kFold) throw new NoSuchElementException(\"CrossValidatorIterator exhausted.\");\n      int start = originalTrainData.size() * iter / kFold;\n      int end = originalTrainData.size() * (iter + 1) / kFold;\n      //Logging.logger(this.getClass()).info(\"##train data size: \" +  originalTrainData.size() + \" start \" + start + \" end \" + end);\n      Pair<GeneralDataset<L, F>, GeneralDataset<L, F>> split = originalTrainData.split(start, end);\n\n      return new Triple<>(split.first(), split.second(), savedStates[iter++]);\n    }\n\n  } // end class CrossValidationIterator\n\n\n  public static class SavedState {\n    public Object state;\n  }\n\n  public static void main(String[] args) {\n    Dataset<String, String> d = Dataset.readSVMLightFormat(args[0]);\n    Iterator<Triple<GeneralDataset<String, String>,GeneralDataset<String, String>,SavedState>> it = (new CrossValidator<>(d)).iterator();","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/stanfordnlp/CoreNLP/blob/1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a/src/edu/stanford/nlp/classify/CrossValidator.java#L57-L93","documentation":"NoSuchElementException thrown by CrossValidationIterator.next() when next() is called after all kFold folds have already been returned (iter == kFold). It indicates the caller ignored hasNext() and over-iterated the fold sequence.","triggerScenarios":"Thrown at src/edu/stanford/nlp/classify/CrossValidator.java:75 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Guard next() calls with hasNext()","Loop with `while (iterator.hasNext())` instead of a fixed count larger than kFold","Re-create the CrossValidator if more passes over folds are needed"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a","analyzedAt":"2026-09-10T02:24:07.274Z","contentChangedAt":"2026-09-10T02:24:07.274Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}