【发布时间】:2018-06-19 08:30:43
【问题描述】:
在第一个循环中,while 停止并在 incomStr = view.read(); 处等待控制台输入,但在第二个循环中它不会停止,而是读取 null 并继续。
为什么会这样?
public void mainDialogueHolder() {//todo
setCmdState(CmdLineState.WAIT);
view.write("Hello, user!");
view.write("Please, type `help` for list available commands. ");
while (getCMDState().equals(CmdLineState.WAIT)){
String incomStr;
incomStr = view.read();//implementation is below
readCmd(incomStr);
}
}
视图的实现
public class Console implements View {
@Override
public void write(String message) {
System.out.println(message);
}
@Override
public String read() {
try (
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))
){
return reader.readLine();
} catch (IOException ex) {
System.out.println(ex.getMessage());
return null;
}
}
}
【问题讨论】:
-
如果它返回
null,这意味着你通过了你的catch块。那么提示的消息是什么,应该说明错误是什么 -
但是为什么它不停止并等待返回 reader.readLine();
-
异常应该告诉你
标签: java while-loop readline