我不想重温以前的主题,但我正在为一门课程做一个项目,我在一个特定的片段中反复遇到这个错误,在这个片段中,我有许多其他相同格式的代码,这些代码丝毫没有给我带来悲伤。
public static void addCruise() {
Scanner newCruiseInput = new Scanner(System.in);
System.out.print("Enter the name of the new cruise: ");
String newCruiseName = newCruiseInput.nextLine();
// Verify no cruise of same name already exists
for (Cruise eachCruise: cruiseList) {
if (eachCruise.getCruiseName().equalsIgnoreCase(newCruiseName)) {
System.out.println("A cruise by that name already exists. Exiting to menu...");
return; // Quits addCruise() method processing
}
}
// Get name of cruise ship
Scanner cruiseShipInput = new Scanner(System.in);
System.out.print("Enter name of cruise ship: ");
String cruiseShipName = cruiseShipInput.nextLine();
cruiseShipInput.close();
// Get port of departure
Scanner cruiseDepartureInput = new Scanner(System.in);
System.out.print("Enter cruise's departure port: ");
String departPort = cruiseDepartureInput.nextLine();
cruiseDepartureInput.close();
所以,如上所述,在那之前我对任何事情都没有意见 cruiseDepartureInput
扫描仪。但在我为那行提供输入之前,eclipse抛出了一个错误,它的全文如下:
在线程“main”java.util.nosuchelementexception中输入cruise的出发港:exception:找不到行
在java.base/java.util.scanner.nextline(scanner。java:1651)
在driver.addcruise(驾驶员。java:295)
在driver.main(驱动程序。java:38)
为什么我会在这里面对这个例外,而不是在程序的其他地方?其他一切都按预期进行了测试和运行,但这种特殊的输入正在变成一个令人头痛的问题。
另外,请原谅我的错误格式,我所能做的就是编辑很少愿意合作
1条答案
按热度按时间0lvr5msh1#
删除此行,您将注意到您的问题将消失(目前):
这里的问题是你正在关闭
System.in
流,这意味着您不能再接受任何输入。所以当你尝试用System.in
它将失败,因为流不再存在。对于一个简单的项目,正确的答案是不要关闭扫描仪,或者最好只创建一个在整个项目中使用的扫描仪: