我在 Java 中遇到了 Scanner 的问题。我有一个System.in
基于这些数据解析和创建对象的方法。但是如果我Scanner
在方法内部创建,我有两种方法可以做到这一点,即关闭和不关闭。在第一种情况下,也Scanner.close()
关闭System.in
,否则它会提前缓冲,并且它缓冲的字符变得无法从另一个 Scanner 访问。所以现在我将一个Scanner
实例传递给方法。但是,如果您需要从控制台读取另一个对象,例如通过BufferedReader
. 此外,它似乎不是一个真正干净的设计解决方案。
问问题
134 次
2 回答
0
我猜设计已经考虑到一次只有一个Reader
orScanner
可以实际读取InputStream
( System.in
),因此在其上放置几个Reader
s 是无用的(因为它也消耗流),因此可以关闭底层的InputStream
.
编辑:一种解决方案是InputStream
直接使用 ( read()
) 并自己处理字节的读取。例如,您可以使用String
构造函数来仅返回未使用的部分。String(byte[])
substring()
于 2013-03-25T00:07:05.280 回答
0
定义 aBufferedReader
并将其传递给您的方法。使用它将行读入字符串并附加 aScanner
而不是System.in
.
于 2013-03-25T00:27:51.947 回答