我用来java.util.Scanner
从控制台读取命令。
try
{
ICommand cmd = cmdReader.ReadCommand();
cmd.Execute(conn);
}
catch(MyException ex)
{
// print a message about unknown command
continue;
}
其中ReadCommand
实现如下:
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
)?