gpt4 book ai didi

Java使用Scanner作为构造函数的参数

转载 作者:搜寻专家 更新时间:2023-11-01 02:29:25 24 4
gpt4 key购买 nike

这是一个学校作业的问题,这就是为什么我这样做的原因。

无论如何,我在 main 方法中使用 Stdin 创建了一个扫描仪(Scanner stdin = new Scanner(System.in); 是行),从程序运行时指定的 txt 中读取数据。此 Scanner 在主体中按预期工作,但是我需要在以 Scanner 作为参数的自定义类中使用它:

    public PhDCandidate(Scanner stdin)
{

name = stdin.nextLine();
System.out.println(name); //THIS NEVER RUNS
preliminaryExams = new Exam[getNumberOfExams()];

for(int i = 0; i <= getNumberOfExams(); i++)
{
preliminaryExams[i] = new Exam(stdin.nextLine(), stdin.nextDouble());
}
System.out.print("alfkj");
}

在这一点上,扫描器的任何调用都将结束程序,不会抛出任何异常或错误。只有调用 .next() 才有效。我可以让程序运行,但它会很麻烦,而且我真的不明白发生了什么。我怀疑我错过了一个非常简单的概念,但我迷路了。任何帮助将不胜感激。

最佳答案

请确保在调用构造函数之前没有关闭并重新初始化 Scanner stdin,因为我怀疑这是问题所在,即如果您正在执行以下操作:

        Scanner stdin = new Scanner(System.in);
.........
stdin.close(); //This will close your input stream(System.in) as well

.....
.....

stdin = new Scanner(System.in);
PhDCandidate phDCandidate = new PhDCandidate(stdin);

stdin 构造函数内不会读取任何内容,因为输入流 System.in 已经关闭。

关于Java使用Scanner作为构造函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com