我正在尝试通过Scanner
对象读取命令。检查我使用的输入语法sc.hasNext()
(对于缺少命令的情况)。它已经在许多情况下工作得很好,但现在我有在 JavaAPI 中描述为“可能阻塞并等待输入”的情况。
该hasNext()
方法何时阻塞以及如何控制它?有趣的是,它在块前的 3 个案例中工作得非常好。JavaAPI 还描述hasNext()
为检查是否存在另一个 Input 的正确方法,以便该方法next()
不会产生Exception
.
这是我到目前为止生成的代码:
if (sc.hasNext() && sc.next().equals("create")) {
if (sc.hasNextInt()) {
width = sc.nextInt();
if (width > 0) {
if (sc.hasNextInt()) {
heigth = sc.nextInt();
if (heigth > 0) {
if (sc.hasNext()) { //At this point the hasNext Statement blocks for //no reason till an Input is made.
charset = sc.next();
Image = new AsciiImage(width, heigth,charset);
} else {
ret = false;
System.out.println("INPUT MISMATCH");
}
} ...//and so on
在此先感谢,我自己在这个主题上找不到任何东西。编辑:扫描仪被定义为 System.in,但这不应该是一个问题 - 至少到目前为止还不是一个问题。