为了账号安全,请及时绑定邮箱和手机立即绑定

使用 hasNextLine() 方法检查多行

使用 hasNextLine() 方法检查多行

紫衣仙女 2021-12-18 15:10:55
我在使用该Scanner.hasNextLine()方法时遇到了问题。这是我的代码:while(scan.hasNextLine()) {              definition = scan.nextLine();     otherInfo = scan.nextLine();     link = scan.nextLine();}如您所见,在 Scanner 检查是否还有另一行之后,我将三行作为输入。问题出现在我的文件末尾。 Scanner 扫描文件的最后一行并执行 while 循环,即使没有足够的行来完成循环而不抛出NoSuchElementFound异常。有什么方法可以使用该Scanner.hasNextLine()方法检查文件中是否还有多行?感谢您的时间和您可以提供的任何帮助。
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

一种解决方案是将变量放入诸如 an 之类的数据结构中ArrayList,然后执行以下操作:


ArrayList<String> arr = new ArrayList<>();

while(scan.hasNextLine()) {         

    arr.add(scan.nextLine());

}

这样您就可以确保有下一行并且您不必对分配变量进行硬编码。


那么arr[0]将会是definition,arr[1]将会是otherInfo,arr[2]将会是link


查看完整回答
反对 回复 2021-12-18
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

你需要检查是否有对下一行otherInfo和link,在检查definition中做到while (scan.hasNextLine()):


while(scan.hasNextLine()) {

    definition = scan.nextLine();


    if (scan.hasNextLine()) {

        otherInfo = scan.nextLine();


        if (scan.hasNextLine())

            link = scan.nextLine();

    }

}

但问题是你从这个循环中得到了什么?

只是阅读行而不保存它们,或打印它们?

循环在某个时刻结束,3 个变量有它们的最后 3 个值。


查看完整回答
反对 回复 2021-12-18
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

你的文件总是有你关心的三件事吗?如果是这样,请使用 for 循环而不是 while 循环来简化问题。这样你就不必担心尾随的换行符(这是常见的)把你搞砸了。


for(int i = 0; i < 3; i++) {         

    definition = scan.nextLine();

    otherInfo = scan.nextLine();

    link = scan.nextLine();

}


查看完整回答
反对 回复 2021-12-18
  • 3 回答
  • 0 关注
  • 293 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号