【问题标题】:Java Scanner not recognizing lines in fileJava Scanner 无法识别文件中的行
【发布时间】:2013-10-20 22:22:00
【问题描述】:

所以我使用以下内容读取文本文件:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

String f = "file.txt";
Scanner in = new Scanner(new File(f));
while(in.hasNextLine()){
    //code here to make a matrix from the data in the text file
}

现在这个文本文件应该创建一个有 48927 行的矩阵(文本文件中的行数)。在第 196 行,while 循环中断。

它曾经是第 198 行,然后我去掉了空格(不是结束换行符),它移到了 196

这两行我都看了,和其他的没什么区别!

为什么扫描仪不将它们读取为线条?

只是为了给你一些关于文件的内容,下面是行的样子 (195-200):

CRUMBS BAKE SHOP<split>420<split>LEXINGTON AVENUE<split>10017<split>2122970500<split>2010-12-30 00:00:00<split>10.0<split>N<split>MANHATTAN<split>BAKERY

FAITHY'S KITCHEN<split>3907<split>DYRE AVENUE<split>10466<split>7186550780<split>2010-12-03 00:00:00<split>22.0<split>N<split>THE BRONX<split>CARIBBEAN

SIRUYEON<split>150-36<split>NORTHERN BOULEVARD<split>11354<split>7184616677<split>2013-05-07 00:00:00<split>60.0<split>N<split>QUEENS<split>CAFE, COFFEE, TEA

MILON BANGLASESH & INDIAN RESTAURANT<split>93<split>1 AVENUE<split>10003<split>2122284896<split>2013-02-20 00:00:00<split>19.0<split>B<split>BROOKLYN<split>BANGLADESHI

HOLEY CREAM<split>796<split>9 AVENUE<split>10019<split>2122478400<split>2011-07-18 00:00:00<split>16.0<split>B<split>MANHATTAN<split>ICE CREAM, GELATO, YOGURT, ICES

CHOP'T<split>1460<split>BROADWAY<split>10036<split>6465710601<split>2011-10-25 00:00:00<split>nan<split>A<split>MANHATTAN<split>SALADS

注意:最后一行的逗号是整个文本文件的共同特征

错误

如果我让 while 循环继续执行直到出现错误,在第 196 行(它无法识别的行)我会收到此错误:

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Scanner.java:1516)

【问题讨论】:

  • 省略的代码中是否有任何中断或您的代码没有进一步阅读?
  • 你有什么错误吗?还是停止阅读?!
  • 循环停止的原因不是因为错误也不是因为我的代码,而是因为in.hasNextLine() 变为false AKA 扫描仪认为没有另一行但还有 48700 行...
  • @X-Pippes 我刚刚添加了一个错误,如果在它无法识别最后一行时没有循环停止,我会得到这个错误,但这并没有真正增加我的知识,因为我们已经知道循环停止的原因
  • 你试过in.hasNext()吗?

标签: java file java.util.scanner


【解决方案1】:

你真的必须使用Scanner吗? 尝试将BufferedReaderFileReader 一起使用。

检查一下

https://forums.oracle.com/message/4631933

[编辑]

检查这个类似的问题 Problem using the nextLine() and hasNextLine() methods of Scanner

【讨论】:

  • 尝试使用另一个来检查是文件问题还是方法问题
  • 它修复了它,虽然我不明白为什么
猜你喜欢
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多