0

Java のスキャナーに問題があります。System.inこのデータに基づいてオブジェクトを解析および作成するメソッドがあります。しかしScanner、メソッド内で作成する場合、それを行うには 2 つの方法があります。つまり、閉じる方法と使用しない方法です。最初のケースでもScanner.close()閉じSystem.inます。そうしないと、事前にバッファリングされ、バッファリングされた文字は別のスキャナから到達できなくなります。Scannerそのため、インスタンスをメソッドに渡します。ただし、コンソールから別のオブジェクトを読み取る必要がある場合は、信頼できませんBufferedReader。さらに、それは本当にきれいな設計ソリューションではないようです。

4

2 に答える 2

0

設計では、一度に( ) を実際に読み取ることができるのは1Readerつだけであると考えられているため、複数の s を持つことは役に立たず (ストリームも消費するため)、基になる.ScannerInputStreamSystem.inReaderInputStream

編集: 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 に答える