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

Java带参构造方法无法传递用户输入,报NoSuchElementException错误

解决Java Scanner读取输入异常与构造方法赋值错误

问题分析

你遇到的java.util.NoSuchElementException: No line found异常,是因为Scanner尝试读取输入时,标准输入流已关闭或无可用输入内容;同时代码里的Student构造方法还存在赋值错误。

修复步骤

1. 修正构造方法的赋值错误

Student类的构造方法中,参数名为Date(大写D),但赋值时误用了未定义的date,导致编译错误。修改方式二选一:

方式一:统一参数名与实例变量名

class Student
{
    String name;
    String date;
    
    Student(String name, String date)
    {
        this.name = name;
        this.date = date;
    }
}

方式二:修正赋值语句的参数引用

Student(String name, String Date)
{
    this.name = name;
    this.date = Date; // 改为引用参数Date
}

2. 解决NoSuchElementException异常

该异常通常出现在输入流不可用的场景,比如运行环境未提供标准输入、输入流被提前关闭。添加输入存在性判断可以避免异常,同时确保运行时能正常输入内容:

修改Main类的main方法:

public class Main
{
    public static void main(String args[])
    {
        System.out.println("Here is the date");
        Scanner myObj = new Scanner(System.in);
        System.out.println("Enter username");

        String name = "";
        // 判断是否有输入可读
        if (myObj.hasNextLine()) {
            name = myObj.nextLine();
        }
        
        System.out.println("Enter date");
        String date = "";
        if (myObj.hasNextLine()) {
            date = myObj.nextLine();
        }
      
        Student s1 = new Student(name, date);
        // 使用完毕关闭Scanner
        myObj.close();
    }
}

额外说明

如果是在IDE中运行,需确认IDE的控制台配置允许输入内容;命令行运行时,直接在控制台输入对应内容即可,不要提前终止输入流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:30:49