Java扫描程序,定界符和行尾
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java扫描程序,定界符和行尾相关的知识,希望对你有一定的参考价值。
我有一个数据文件,在多行连续行中使用斜杠分隔的整数。这是我想用来读取和打印所有这些int的一小段代码:
import java.util.Scanner;
import java.io.File;
class Testing {
public static void main (String[] args) throws Exception {
Scanner file = new Scanner(new File("data.txt"));
file.useDelimiter("/");
while (file.hasNextInt())
System.out.println(file.nextInt());
}
}
数据文件看起来像这样:
1/2/3
4/5/6
数据文件的输出如下:
1
2
数据文件两个看起来像这样:
1/2/3
从数据文件两个输出看起来像这样:
1
2
3
有人可以解释为什么我会出现这种情况吗?特别是,为什么第一个示例忽略数据第一行末尾的“ 3”的出现?
注:我知道几种“更好”的方式来获得所需的行为:一次读取整行,并使用split()和parseInt(),一次读取整行,并将其转换为单独的Scanner对象,依此类推。那不是我的问题。我试图了解为什么这段特定的代码无法按预期工作---特别是为什么文件有more行时我得到了[[less数据。
答案
最后一个hasNextInt()
将读取带有回车符的元素。即元素将为3
。显然不是int,因此它将无法通过测试file.hasNextInt()
另一答案
[到达第1行的末尾,即在值3之后,有一个不是整数的'返回字符'。从此开始,对hasNextInt()的测试开始失败。因此它最多只能打印3个。即1 2 3以上是关于Java扫描程序,定界符和行尾的主要内容,如果未能解决你的问题,请参考以下文章
sublime text里怎么使光标跳至行尾和行首,快捷键怎么用