如何使用java中的扫描程序扫描特定行?

时间:2017-10-03 04:52:35

标签: java java.util.scanner

在Java中使用Scanner实用程序时,如何扫描特定行或扫描两行?就像我使用scanner.nextLine()时一样,我该如何再次回到这一行呢?或者如何阅读任何两行?这可能吗?

3 个答案:

答案 0 :(得分:3)

不幸的是没有

创建

Scanner是为了阅读streams,并且他们不会“存储”他们阅读的信息。意思是你的消息来源应该通过互联网读取一些传输,它不能再回来再读一遍,例如。扫描程序以与这些互联网传输类似的方式处理files,方法是从文件创建input stream并处理所有花哨的编码以及所有这些。

如果您想再次从文件中读取一行或跳回另一行,您最好的选择是关闭扫描仪,创建一个新的扫描仪对象,然后再一直向下移动到首选行。

简单示例:

假设我们正在寻找一个名称 我们要求它在包含名称的文件中搜索的名称:

一种方法是在while循环中循环遍历文件,读取一行(名称)并查看它是否与我们的名称匹配,如果是,我们存储我们从中读取的行,关闭扫描仪,创建一个新的扫描程序对象并再次启动循环过程,这次当我们到达我们搜索的名称之前的行并停止bam时停止!

另一种(我认为更好的方法)是将我们从扫描仪(在我们的示例名称中)中读取的所有信息存储在某种list中(在我们的示例中为arraylist完美)。然后我们可以使用该列表读取一行两次,读取第5行(列表中的第5个元素)或返回上一行

希望这会有所帮助,如果您需要一些代码,请随时询问:)

答案 1 :(得分:1)

Scanner不是为此而构建的 - 另外,Scanner类根本不保留任何行的历史记录

.nextLine()只会给你整行(第一行)和 .next()只会给你第一个单词。它不存储任何行/单词/字符。

答案 2 :(得分:0)

我认为您无法使用扫描仪本身执行此操作,但您可以使用基础mark()的{​​{1}}和reset()方法返回之前读取的位置