Получите различные типы ввода в Java - PullRequest
0 голосов
/ 25 августа 2018

Я довольно новичок в Java и программировании в целом, я работаю над программой, которая должна получать данные от пользователя и основана на этих экземплярах классов создания / удаления.

Вот код:

while(true) {
    int is = -1; //0 is the number of first istance
    try(Scanner s = new Scanner(System.in);){
        System.out.print("Enter the desired action: ");
        String input = s.next();
        if(input.equals("j")){
            (new Thread(new Parser())).start();
        }

        is = Integer.parseInt(input);

        if (is >= 0 && is <= (Parser.count - 1)) {
            Parser.kill(is);    
        }else {
            System.out.println("wrong key");
            break;
        }
    }catch(NumberFormatException e){
        System.out.println("exception");// 
    }
}

Основная проблема заключается в том, что он выдает «NoSuchElementException», если на входе не «j», я пытался перехватить исключение, но в этом случае программа зацикливается и перестает ждатьпользовательский ввод.Вот трассировка стека:

java.lang.NumberFormatException: For input string: "m"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at Task.run(Task.java:17)
    at java.lang.Thread.run(Unknown Source)

Не могли бы вы указать мне, что я делаю неправильно?Есть ли какая-нибудь библиотека, которая могла бы помочь мне сделать программу, подобную cmd?

...