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
相关产品推荐
相关产品推荐

