Java のスキャナーに問題があります。System.in
このデータに基づいてオブジェクトを解析および作成するメソッドがあります。しかしScanner
、メソッド内で作成する場合、それを行うには 2 つの方法があります。つまり、閉じる方法と使用しない方法です。最初のケースでもScanner.close()
閉じSystem.in
ます。そうしないと、事前にバッファリングされ、バッファリングされた文字は別のスキャナから到達できなくなります。Scanner
そのため、インスタンスをメソッドに渡します。ただし、コンソールから別のオブジェクトを読み取る必要がある場合は、信頼できませんBufferedReader
。さらに、それは本当にきれいな設計ソリューションではないようです。
質問する
134 次
2 に答える
0
設計では、一度に( ) を実際に読み取ることができるのは1Reader
つだけであると考えられているため、複数の s を持つことは役に立たず (ストリームも消費するため)、基になる.Scanner
InputStream
System.in
Reader
InputStream
編集: 1 つの解決策は、InputStream
直接 ( read()
) を使用して、自分でバイトの読み取りを処理することです。たとえば、使用されなかった部分のみを返すために一緒に使用できるString
コンストラクターがあります。String(byte[])
substring()
于 2013-03-25T00:07:05.280 に答える
0
a を定義BufferedReader
してメソッドに渡します。これを使用して行を文字列に読み込み、 のScanner
代わりに をそれに付けSystem.in
ます。
于 2013-03-25T00:27:51.947 に答える