【发布时间】: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()变为falseAKA 扫描仪认为没有另一行但还有 48700 行... -
@X-Pippes 我刚刚添加了一个错误,如果在它无法识别最后一行时没有循环停止,我会得到这个错误,但这并没有真正增加我的知识,因为我们已经知道循环停止的原因
-
你试过
in.hasNext()吗?
标签: java file java.util.scanner