java.util.Scanner
コンソールからコマンドを読み取るために使用します。
try
{
ICommand cmd = cmdReader.ReadCommand();
cmd.Execute(conn);
}
catch(MyException ex)
{
// print a message about unknown command
continue;
}
WhereReadCommand
は次のように実装されています。
try (Scanner scanIn = new Scanner(System.in))
{
if (!scanIn.hasNextLine()) return null;
line_ = scanIn.nextLine();
ICommand command = parser_.ParseCommand(line_);
return command;
}
最初の反復コードでは正常に動作します。何か無効なもの (コマンドではない) を書きます。コードは警告を出力して続行します。しかし、コンソールに何かを書いても、他の反復はnull
ここに戻ります。if (!scanIn.hasNextLine()) return null;
入力が見えjava.util.Scanner
ないようです。私は何か間違ったことをしていますか?そして、どうすればユーザー入力を待つことができますか (でサイクルを使用したくないsleep
)?