Я пытаюсь читать команды через объект Scanner
. Для проверки синтаксиса ввода я использую sc.hasNext()
(для случая отсутствующих команд). Это было хорошо для многих случаев, но теперь у меня есть случай, описанный в JavaAPI как "МОЖЕТ блокировать и ждать ввода".
Когда метод 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, но это не должно быть проблемой. По крайней мере, это не было до сих пор.