You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java作业报错java.util.NoSuchElementException: No line found求助

问题:JUnit测试抛出NoSuchElementException,求无未学语法的解决方法及Stack Overflow提问规范

背景与问题

我是大一第一学期第1周的Java零基础学习者,目前仅掌握变量、输入输出、布尔值、运算符及contains方法,还没学if/else、循环等语法,因此不能使用这些未学内容。

我写的代码在学校提供的VSCode云IDE中可正常运行,但提交给教师的JUnit 4自动批改系统时,出现java.util.NoSuchElementException: No line found错误,测试软件未给出具体报错行号,且我找到的其他解决方案都需要用到未学语法。

现有代码

import java.util.Scanner;

public class ContainsAnyCase {

  public static void main(String[] args) {
    System.out.println("Type a word:\n");

    Scanner userInputWord = new Scanner(System.in);

    String word = userInputWord.nextLine();

    String wordlc = word.toLowerCase();

    System.out.println("Type a sentence:\n");

    Scanner userInputSentence = new Scanner(System.in);

    String sentence = userInputSentence.nextLine();

    String sentencelc = sentence.toLowerCase();

    boolean isContains = sentencelc.contains(wordlc);

    System.out.println(isContains);

  }
}

错误原因

你创建了两个Scanner对象读取同一个标准输入流System.in。第一个Scanner读取完输入后,输入流的指针已移到末尾,第二个Scanner再调用nextLine()时,找不到可读取的行,因此抛出该异常。JUnit测试环境通常是批量输入或输入流提前关闭,这种多Scanner的写法更容易触发问题。

无未学语法的修复方法

只需要创建一个Scanner实例并复用它读取所有输入,不需要使用任何未学语法:

import java.util.Scanner;

public class ContainsAnyCase {

  public static void main(String[] args) {
    System.out.println("Type a word:\n");

    Scanner scanner = new Scanner(System.in);

    String word = scanner.nextLine();
    String wordlc = word.toLowerCase();

    System.out.println("Type a sentence:\n");

    String sentence = scanner.nextLine();
    String sentencelc = sentence.toLowerCase();

    boolean isContains = sentencelc.contains(wordlc);
    System.out.println(isContains);

    scanner.close(); // 可选,关闭输入流更规范
  }
}

Stack Overflow提问规范

  • 标题精准:直接点明核心问题和限制条件,比如写成「Java: NoSuchElementException with multiple Scanners in JUnit test (no if/else/loops allowed)」
  • 背景明确:清晰说明你的学习阶段、已掌握/未学的语法限制,避免答主给出超出你能力范围的方案
  • 报错信息完整:复制完整的异常栈信息(若有),即使无行号也要说明测试环境(JUnit 4)和本地运行正常的情况
  • 代码可复现:贴出完整的可运行代码,不要遗漏import、类定义等关键部分
  • 需求清晰:明确说明你需要的内容——错误原因、不使用未学语法的修复方法,避免答主跑题

内容的提问来源于stack exchange,提问作者Salome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:01:19