所以我使用以下内容阅读文本文件:
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)
答案 0 :(得分:1)
你真的必须使用Scanner
吗?
请尝试使用BufferedReader
代替FileReader
。
检查这个
https://forums.oracle.com/message/4631933
[编辑]
检查这个类似的问题 Problem using the nextLine() and hasNextLine() methods of Scanner