我正在尝试通过读取命令Scanner
目的。为了检查我使用的输入语法sc.hasNext()
(针对缺少命令的情况)。它已经在很多情况下工作得很好,但现在我遇到了 JavaAPI 中描述的情况:“可以阻止并等待输入”。
什么时候hasNext()
方法块以及如何控制它?有趣的是,它在块之前的 3 个案例中运行得非常好。 Java API 还描述了hasNext()
作为检查是否有另一个输入的正确方法,以便该方法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,但这不应该是一个问题 - 至少到目前为止还不是一个问题。
通过控制台测试和通过文本文件测试之间存在差异。如果我从控制台读取,程序需要一个流,它将等待进一步的输入。
当通过文本文件的输入进行测试时(仍然使用 System.in 作为扫描仪,使用 Java 程序),hasNext() 将在文件末尾返回 false,因为无法进行进一步的输入。
我真的找不到文档(在https://docs.oracle.com/javase/9/docs/api/java/util/Scanner.html#hasNext-- https://docs.oracle.com/javase/9/docs/api/java/util/Scanner.html#hasNext--)关于这个主题。因此,如果有人找到适当且技术上正确的答案,我将非常感激。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)