我一直有很多麻烦,试图让扫描仪或缓冲读取器尝试和检测一个空行。例如,如果我有一个包含文件:Java扫描仪检测空行?
there
cat
dog
(BLANK LINE)
如果我这样做:
while(scan.hasNextLine())
{
String line = scan.nextLine();
...
...
}
扫描仪不拿起空行。我也尝试使用缓冲读取器,但我碰到这个问题。有没有什么方法可以让扫描器只要返回一个“”,每当它找到这样的空行?欢呼声
我一直有很多麻烦,试图让扫描仪或缓冲读取器尝试和检测一个空行。例如,如果我有一个包含文件:Java扫描仪检测空行?
there
cat
dog
(BLANK LINE)
如果我这样做:
while(scan.hasNextLine())
{
String line = scan.nextLine();
...
...
}
扫描仪不拿起空行。我也尝试使用缓冲读取器,但我碰到这个问题。有没有什么方法可以让扫描器只要返回一个“”,每当它找到这样的空行?欢呼声
您的输入有多少行,因为它有\n
个字符。给定了输入
"there\ncat\ndog\n"
下一行将被正确地划分为
"there\n"
"cat\n"
"dog\n"
(换句话说,没有第四空白行,因为它不是由\n
终止。)
换句话说,在"dog\n"
已被读取后,扫描仪(或缓冲读取器)已达到EOF并且甚至没有空行返回。 (请注意,当行被返回时,新行字符被剥离。)
所以,由于这是预期的行为,我不知道最简单的修复方法是什么。我怀疑解决这个问题的最好方法是简单地将\n
添加到输入中,以便循环运行额外的迭代。
实际上,在输入的末尾附加一个换行符听起来像是会有诀窍!唯一的问题是我很不确定我应该如何去做。我正在阅读这样一个文件atm:scan = new Scanner(new BufferedReader(new FileReader(args [0])));有任何想法吗? (我不想修改我正在直接阅读的文件并添加一个换行符) – Chrispy 2012-04-22 08:40:35
使用'扫描仪'或'BufferedReader',无法确定接收到的行是否以换行符结束是你需要知道的,如果你想添加一个新行,如果它不包含在输入的最后一行)。你必须用我认为不同的方法。 – aioobe 2012-04-22 08:50:26
编辑据我所知,扫描仪删除空白行 - 如果您确定文件以空行结束,请在此之后添加“\ n”,但不够优雅,但可能有用。 – 2012-04-22 14:52:15
空行是输入的最后一行吗? – aioobe 2012-04-22 08:23:11
是的,它是输入的最后一行 – Chrispy 2012-04-22 08:24:24
为了更好地提供帮助,请发布[SSCCE](http://sscce.org/)。 – 2012-04-22 08:29:10