Scanner
オブジェクトを介してコマンドを読み取ろうとしています。私が使用する入力構文を確認するためsc.hasNext()
(コマンドが欠落している場合)。すでに多くのケースで問題なく動作していましたが、JavaAPI で「MAY ブロックして入力を待機する」と記述されているケースがあります。
メソッドはいつhasNext()
ブロックされ、どのように制御できますか? 面白いことに、ブロックの前に 3 つのケースがあれば問題なく動作します。また、JavaAPI は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 として定義されていますが、それは問題ではないはずです。少なくとも今まではそうではありませんでした。