gpt4 book ai didi

Java 扫描器、分隔符和行尾

转载 作者:行者123 更新时间:2023-11-30 01:44:46 28 4
gpt4 key购买 nike

我有一个数据文件,其中多个连续行上有斜杠分隔的整数。
这是我想用来读取和打印所有这些整数的一小段代码:

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 对象等..那不是我的问题。我试图理解为什么这段特定的代码不能按预期工作——特别是,为什么当文件有更多行时我得到更少数据。

最佳答案

最后一个hasNextInt()将读取带有回车符的元素。即该元素将为 3\r\n。这显然不是 int,因此它会导致测试失败 file.hasNextInt()

关于Java 扫描器、分隔符和行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58529176/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com