无法在 Java 构造函数中传递用户输入

Can not pass user input in Java constructor

提问人:imtinan 提问时间:12/3/2022 最后编辑:Anonymousimtinan 更新时间:12/3/2022 访问量:83

问:

我正在尝试在参数化的 java 构造函数中获取用户输入,但我失败了。它给出以下错误

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
    at Main.main(Main.java:24)

这是我的代码

import java.util.Scanner;

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

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

        String name = myObj.nextLine();
        System.out.println("Enter date");
        String date = myObj.nextLine();
      
        
       Student s1= new Student(name,date);
    }
}
java.util.scanner 用户输入

评论

2赞 Chaosfire 12/3/2022
添加导致此异常的示例输入,以创建最小的、可重现的示例。目前代码工作正常,问题无法重现。
1赞 Chaosfire 12/3/2022
顺便说一句,由于 ctor 参数被命名为 ,因此不执行任何操作。更改参数名称 do ,或将赋值更改为 。第一个选项应该是首选,因为 java 变量名称以小写字母开头。Datethis.date=date;datethis.date = Date;
0赞 Anonymous 12/3/2022
这回答了你的问题吗?java.util.NoSuchElementException:未找到行。搜索更多。
1赞 Anonymous 12/3/2022
@m3ow 情况正好相反。OP ——我猜是错误地——用大写字母命名了构造函数参数。而且无论哪种方式,这个错误都不会导致.DateDjava.util.NoSuchElementException: No line found
1赞 m3ow 12/4/2022
我尝试重现错误。这可能是由您的输入引起的。例如,当我在 a 上输入 ctrl+z 时,它会抛出 NoSuchElementException。nextLine()

答:

1赞 jurez 12/3/2022 #1

根据堆栈跟踪,这与构造函数无关。尝试从标准输入中读取一行时,会发生错误。Scanner

如果在 IDE 中运行此程序,则输入可能不可用,因此没有下一行可供读取。尝试从控制台/命令行运行程序。某些 IDE 还具有用于启用标准输入的复选框(通常作为运行/调试配置的一部分)。System.inScanner