System.in.read(byte[])
またはSystem.in.read(byte[],int,int)
を呼び出さずにコンソールから最初の行を読み取り、返すJavaメソッドを作成するタスクが与えられました。 (System.in
は、それらが呼び出された場合IOException
をスローするように変更されました。)BufferedReaderが返さない
私はこの解決策を考え出した:どんなに私はconsoleReader.readLine()
メソッドが返すことはありませんコンソールに書かれたものは
InputStream a = new InputStream(){
public int read() throws IOException{
return System.in.read();
}
};
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(a));
return consoleReader.readLine();
! これを修正するにはどうすればよいですか?
編集:InputStream System.inが設定されているものを使用する必要があります。
このコードでは、NoSuchElementExceptionが "No line found"と表示されます。 – Gergely
確かに私のために正常に動作しています。 コード: 'import java.util.Scanner; パブリッククラスScannerClassTest {パブリック静的無効メイン(文字列[] args){ スキャナコンソール=新しいスキャナ(System.in)。 System.out.println(console.next()); } } ' –
' Scanner'が 'System.in.read(byte []、int、int)'を呼び出すのではなく、私が既に質問に書いているので 'IOException'を投げます。しかし、 'Scanner'は別の' IOException'を投げることはできません。したがって、もしそれを捕まえると 'NoSuchElementException'がスローされます。 – Gergely