当前位置: 首页 > 知识库问答 >
问题:

addCruise()--NoSuchElementException:未找到行

梁建德
2023-03-14

不是重温老话题,但我正在做一个课程的项目,我在一个特定的片段中反复遇到这个错误,在那里我有相同格式的各种其他代码,它们没有给我带来任何痛苦。

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();

所以,如上所述,在那次巡航去入式输入扫描仪之前,我对任何事情都没有遇到任何问题。但是在我提供该行的输入之前,Eclipse抛出了错误,全文如下:

在线程“main”java.util中输入cruise的出发港:Exception。NoSuchElementException:未找到行

  • at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
  • 在驱动程序添加巡航(驱动程序.java:295)
  • 在驱动程序主(驱动程序.java:38)

为什么我在这里会遇到这个异常,而在程序的其他地方却没有?其他所有东西都按预期进行了测试和运行,但是这个特殊的输入变得令人头疼。

此外,请原谅我的格式错误,我尽了最大的努力,因为编辑不太愿意合作

共有1个答案

储承
2023-03-14

删除此行,您会注意到您的问题将消失(目前):

cruiseShipInput.close();

这里的问题是您正在关闭 System.in 流,这意味着您无法再接受任何输入。因此,当您尝试使用 System.in 启动新的扫描仪时,它将失败,因为流不再存在。

对于一个简单的项目,正确的答案是不要关闭扫描仪,或者更好的是,只创建一个扫描仪,用于整个项目:

public static void addCruise() {

    //Create a single scanner that you can use throughout your project.
    //If you have multiple classes then need to use input then create a wrapper class to manage the scanner inputs
    Scanner inputScanner = new Scanner(System.in);

    //Now do the rest of your inputs
    System.out.print("Enter the name of the new cruise: ");
    String newCruiseName = inputScanner.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
    System.out.print("Enter name of cruise ship: ");
    String cruiseShipName = inputScanner.nextLine();
    
    // Get port of departure
    System.out.print("Enter cruise's departure port: ");
    String departPort = inputScanner.nextLine();
 类似资料:
  • 我把我的文件保存在。java文件旁边。 运行: 名称:Koen 得分:44 线程“main”Java.util.nosuchelementException:未找到行 名称:Kevin 得分:55 在Java.util.scanner.nextline(Scanner.Java:1585) 在tetris.fileio.loadHighscores(fileio.Java:41) 在tetris.

  • 我有一个输入框,就像我在这里用来输入我的问题,它的HTML是 每次,我都会尝试输入一些文本 我明白错误了-

  • 对不起,我的问题,但我是一个初学者。请你能支持与扫描仪相关的关心。 “背景”:我写了一些研究扫描仪的代码: 我有一个例外:找不到行。这就是我在输出中得到的结果: 任务:运行失败今天是哪一天?线程“main”java.util.NosuchelementException异常:在java.base/java.util.Scanner.NextLine(Scanner.java:1651)和demoo

  • 我正在尝试使用页面xpath查找并单击元素。当我单击特定元素并使用 firebug 检查它时,即使 firebug 能够同时找到相对路径和绝对路径,路径也从不起作用,并且似乎找不到? 这是火虫识别的相对路径

  • 问题内容: 通过扫描程序读取文件时,程序中出现运行时异常。 我的代码是: 问题答案: 与你需要检查,如果存在与下一行 所以循环变成 是读者返回null 当然在这段代码中,这取决于输入的格式是否正确

  • 当我运行我的Android应用程序从eclipse,我得到这个错误。 从日蚀错误复制粘贴 然而,我的亚洲开发银行就在它说的不在的地方。 出了什么问题,如何解决? 我将cd放入adb所在的目录()中,输入adb并显示 adb是绿色的,这意味着它是可执行的,对吗? 例如,dx也是绿色的,当我在命令提示符中输入dx时,它工作了... adb怎么了?