java - 使用 hasNextLine() 方法检查多行
问题描述
我的Scanner.hasNextLine()
方法有问题。这是我的代码:
while(scan.hasNextLine()) {
definition = scan.nextLine();
otherInfo = scan.nextLine();
link = scan.nextLine();
}
如您所见,在 Scanner 检查是否有另一行之后,我将三行作为输入。问题出现在我的文件末尾。Scanner 扫描文件的最后一行并执行 while 循环,即使没有足够的行来完成循环而不会引发NoSuchElementFound
异常。
有什么方法可以使用该Scanner.hasNextLine()
方法检查文件中是否还有多行?感谢您抽出宝贵的时间以及您能提供的任何帮助。
解决方案
一种解决方案是将变量放入诸如 an 的数据结构中ArrayList
,然后执行以下操作:
ArrayList<String> arr = new ArrayList<>();
while(scan.hasNextLine()) {
arr.add(scan.nextLine());
}
这样,您可以确保有下一行,并且您不必硬编码分配变量。
那么arr[0]
将是definition
,arr[1]
将是otherInfo
,arr[2]
将是link
推荐阅读
- metatrader4 - 为什么我的计算与 metatrader 4 回测损失不匹配?
- java - Hazelcast 缓存 - 打印太多日志(忽略来自 [10.10.10.10]:5702 的连接检查,因为此节点不是主节点...)
- c# - 如何使用 EF 核心定义层次表
- r - 如何在使用 dplyr::mutate 时对一系列数字进行编码?
- discord.py - 如果另一个用户发送消息,你如何制作一个发送消息的不和谐机器人?不和谐.py
- reactjs - React.js 没有从我的 .sass 文件中应用样式
- css - 为什么路径的第 n 个孩子不可访问?
- python - AttributeError:'pygame.Surface'对象没有属性'get'(python 2.7.5)
- matlab - 在 Matlab 中使用 Sobel 掩码进行边缘检测此代码不接受下面提到的行
- telerik - 将 Telerik Blazor Control 连接到实体和 Ardalis.SmartEnum