0

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

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)
4

1 回答 1

1

你真的要用Scanner吗?尝试BufferedReader与 a一起使用FileReader

检查这个

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

[编辑]

检查这个类似 的问题 使用 Scanner 的 nextLine() 和 hasNextLine() 方法的问题

于 2013-10-20T22:48:37.640 回答