我可以复印一份扫描仪吗?

时间:2014-09-18 00:51:43

标签: java methods parameters

我有一个方法,将扫描仪作为参数,我想复制它,所以我可以使用它两次。这可能吗?

对不起,我是这个网站的新手。这是一个全java网站吗?因为那就是我正在使用的东西。

2 个答案:

答案 0 :(得分:0)

只要我知道你是否想要使用它两次,你必须初始化两个扫描仪或初次化同一个扫描仪,这是你第一次处理它。 因此,这个问题的总体答案是,当您第一次处理流时,再次初始化扫描程序。

答案 1 :(得分:0)

目前还不清楚你的意思是什么......所以我可以使用它两次"。

愚蠢的解释是你想在Scanner对象上进行多次调用。显然,你不应该复制Scanner来做那件事。

下一个解释是您希望使用Scanner来从同一输入流中读取相同的令牌流两次。那不会奏效。扫描程序假定它独占使用基础输入流......并且消耗流中的字符。因此,如果您有一个带有两个扫描仪的输入流,则其中一个扫描仪将获得一些输入字符,另一个将获得其余部分。 (此外,哪个扫描仪可以轻松预测哪些字符。)

虽然有几种解决方法。例如 -

  • 如果数据源是一个文件(您的应用程序打开),您可以打开它两次并为其创建两个独立的Scanner

  • 您可以将整个流作为String或StringBuffer或字符数组读入内存,然后创建两个输入流来读取缓冲的数据,并为流提供独立的Scanner

  • 您可以使用" tee流" (例如:http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/input/TeeInputStream.html)或类似命令将输入​​的副本保存到单独的输出流,然后将写入后者的数据提供给单独的扫描程序。

最终解释是您希望两个扫描程序从同一个流中返回令牌。如果你想这样做,你最好使用一个扫描仪,并将它传递到需要它的两个地方。 (如果您尝试在同一输入流上使用两个扫描仪,则可能会遇到上述问题。)