在Java中使用Scanner实用程序时,如何扫描特定行或扫描两行?就像我使用scanner.nextLine()时一样,我该如何再次回到这一行呢?或者如何阅读任何两行?这可能吗?
答案 0 :(得分:3)
不幸的是没有
创建Scanner是为了阅读streams,并且他们不会“存储”他们阅读的信息。意思是你的消息来源应该通过互联网读取一些传输,它不能再回来再读一遍,例如。扫描程序以与这些互联网传输类似的方式处理files,方法是从文件创建input stream并处理所有花哨的编码以及所有这些。
如果您想再次从文件中读取一行或跳回另一行,您最好的选择是关闭扫描仪,创建一个新的扫描仪对象,然后再一直向下移动到首选行。
简单示例:
假设我们正在寻找一个名称 我们要求它在包含名称的文件中搜索的名称:
一种方法是在while循环中循环遍历文件,读取一行(名称)并查看它是否与我们的名称匹配,如果是,我们存储我们从中读取的行,关闭扫描仪,创建一个新的扫描程序对象并再次启动循环过程,这次当我们到达我们搜索的名称之前的行并停止bam时停止!
另一种(我认为更好的方法)是将我们从扫描仪(在我们的示例名称中)中读取的所有信息存储在某种list中(在我们的示例中为arraylist完美)。然后我们可以使用该列表读取一行两次,读取第5行(列表中的第5个元素)或返回上一行
希望这会有所帮助,如果您需要一些代码,请随时询问:)
答案 1 :(得分:1)
Scanner不是为此而构建的 - 另外,Scanner类根本不保留任何行的历史记录
.nextLine()只会给你整行(第一行)和 .next()只会给你第一个单词。它不存储任何行/单词/字符。
答案 2 :(得分:0)
我认为您无法使用扫描仪本身执行此操作,但您可以使用基础mark()
的{{1}}和reset()
方法返回之前读取的位置