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

在进行简单的文件处理时,如何修复NoSuchElementExc0019?

汪兴旺
2023-03-14

自从我醒来后,我一直在努力让它工作,但我根本不知道是什么导致了这个异常。

try {
        scan = new Scanner(new File("dictionary.txt"));
    } catch (FileNotFoundException ex) {
        System.out.print("File not found");
    }
    ArrayList<String> dictionary = new ArrayList<String>();
    while (scan.hasNextLine()) {
        System.out.println(scan.next());
        dictionary.add(scan.nextLine());
    }
    scan.close();

这是输出,第167行是“dictionary.add(scan.nextLine)”:

C:\用户\Aaronbobaron\文档\NetBeansProjects\W

鳄鱼

斑马

袋鼠

山猫

摩天大楼

java线程“AWT-EventQueue-1”中出现异常。util。NoSuchElementException:在java中找不到行。util。扫描仪。下一行(Scanner.java:1585)位于Word。jButton1ActionPerformed(Word.java:167)在Word上执行。在Word$2上访问$100(Word.java:16)。在javax上执行的操作(Word.java:92)。摆动抽象按钮。fireActionPerformed(AbstractButton.java:2018)在javax上。摆动AbstractButton$Handler。在javax上执行的操作(AbstractButton.java:2341)。摆动DefaultButtonModel。fireActionPerformed(DefaultButtonModel.java:402)在javax上执行。摆动DefaultButtonModel。在javax上按下setPressed(DefaultButtonModel.java:259)。摆动普拉夫。基本的基本按钮列表。在java上释放鼠标(BasicButtonListener.java:252)。awt。组成部分javax上的processMouseEvent(Component.java:6505)。摆动JComponent。java上的processMouseEvent(JComponent.java:3321)。awt。组成部分java上的processEvent(Component.java:6270)。awt。容器java上的processEvent(Container.java:2229)。awt。组成部分java上的dispatchEventImpl(Component.java:4861)。awt。容器java上的dispatchEventImpl(Container.java:2287)。awt。组成部分java上的dispatchEvent(Component.java:4687)。awt。轻量级调度员。java上的retargetMouseEvent(Container.java:4832)。awt。轻量级调度员。java上的ProcessMouseeEvent(Container.java:4492)。awt。轻量级调度员。java上的dispatchEvent(Container.java:4422)。awt。容器java上的dispatchEventImpl(Container.java:2273)。awt。组成部分java上的dispatchEvent(Component.java:4687)。awt。事件队列。java上的dispatchEventImpl(EventQueue.java:729)。awt。事件队列。在java上访问$200(EventQueue.java:103)。awt。事件队列3美元。在java上运行(EventQueue.java:688)。awt。事件队列3美元。在java上运行(EventQueue.java:686)。安全访问控制器。java上的doPrivileged(本机方法)。安全ProtectionDomain$1。java上的doIntersectionPrivilege(ProtectionDomain.java:76)。安全ProtectionDomain$1。java上的doIntersectionPrivilege(ProtectionDomain.java:87)。awt。事件队列4美元。在java上运行(EventQueue.java:702)。awt。事件队列4美元。在java上运行(EventQueue.java:700)。安全访问控制器。java上的doPrivileged(本机方法)。安全ProtectionDomain$1。java上的doIntersectionPrivilege(ProtectionDomain.java:76)。awt。事件队列。java上的dispatchEvent(EventQueue.java:699)。awt。EventDispatchThread。java上的pumpOneEventForFilters(EventDispatchThread.java:242)。awt。EventDispatchThread。java上的pumpEventsForFilter(EventDispatchThread.java:161)。awt。EventDispatchThread。java上的pumpEventsForHierarchy(EventDispatchThread.java:150)。awt。EventDispatchThread。java上的pumpEvents(EventDispatchThread.java:146)。awt。EventDispatchThread。java上的pumpEvents(EventDispatchThread.java:138)。awt。EventDispatchThread。运行(EventDispatchThread.java:91)

文本文件为:

短吻鳄

斑马

袋鼠

山猫

摩天大楼

共有3个答案

花烨
2023-03-14

这两个标记都将移动到下一个标记:

System.out.println(scan.next());
dictionary.add(scan.nextLine());

要解决错误,请在调用第二行之前再次检查:

while (scan.hasNextLine()) {
    System.out.println(scan.next());
    if (scan.hasNextLine())
        dictionary.add(scan.nextLine());
}
陈允晨
2023-03-14

我猜你是想跳过代码中的空行。

这应该很好用。从扫描中获取值。然后输入一个临时字符串变量,并使用该变量打印和添加到字典。

String tmp;
    while (scan.hasNextLine()) {
        tmp = scan.next();
        System.out.println(tmp);
        dictionary.add(tmp);
    }
    scan.close();
龙繁
2023-03-14
 while (scan.hasNextLine()) {
        System.out.println(scan.next());
        dictionary.add(scan.nextLine());
    }

检查一次是否有更多内容,然后调用next()两次。无法保证第二次呼叫不会失败(正如您所发现的)。

 类似资料:
  • 问题内容: 因此,对于创建文件,我使用以下命令: 然后将内容写入文件,关闭文件。在下一步中,我处理文件。在程序的最后,我得到一个需要删除的“物理文件”。 有没有一种方法可以编写行为与“物理”文件完全相同的“虚拟”文件(允许以相同的方式对其进行操作),但在Python运行结束时不存在该文件? 问题答案: 您可能要考虑使用a ,它可以为您提供两全其美的意义,因为它将首先创建一个基于内存的临时虚拟文件,

  • 当我尝试使用spring batch中的作业处理器将从csv文件恢复的一些数据持久化到我的数据库中时,控制台中会出现这个错误,对于我的dao来说,我使用的是hibernate 我已经尝试了2种方法,但同样的问题! 错误:javax.persistence.transactionRequiredException:在org.hibernate.internal.sessionimpl.checktr

  • 我用的是Android Studio。我没有使用自定义工具栏。只是一个简单的添加到android应用程序。我正在我的主要活动中扩展AppCompatActivity。我尝试了多个解决堆栈溢出的方案,但都不起作用。我想这是因为我的gradle更与时俱进。 这是错误日志:

  • 拍卖脚本具有以下目录结构 Ubuntu 14.04 tar目前每晚都在crontab-e中运行,它使用绝对路径从/var/www/html/级别备份整个目录。需要一个新的tar备份命令,该命令将通过排除上述文件和目录的组合来减少夜间备份的大小,同时: 1)包括目录/var/www/html/uploaded/cache/ 2) 不包括在 /var/www/html/uploaded/ 下创建的一长

  • 我想创建一个符合这些要求的备份Batch文件: 要求: 所以我试过这个 注意:/v=验证,/y=无提示/e=细分/d=仅更改副本 但是,在运行批处理之后,它没有删除需求2中提到的文件/文件夹。此外,我不知道如何满足要求4 我搜索了很多问题,但他们似乎没有满足要求2的代码 我不想在Win7中使用备份工具,因为它很重 当你做项目时,备份非常重要,我希望我的问题能帮助很多其他程序员。 有人能知道一个好的

  • 我正在尝试使用gradle创建SpringBoot应用程序。但我对processResources任务有一些问题。 在我的例子中,我在“src/main/resources/libs”中有一些JAR文件,这些文件用于我的JAVA构建路径。 我已经准备好尝试在应用程序上添加过滤器。属性,但它不起作用。(Gradle processResources-文件包含$ 我在“进程资源”任务上出现此错误: