在Java中获取不同类型的输入

时间:2018-08-25 08:23:24

标签: java exception input java.util.scanner

我一般对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");// 
    }
}

主要问题是,如果输入不是“ j”,它将抛出“ NoSuchElementException”,我试图捕获该异常,但是在这种情况下,程序进入循环并停止等待用户输入。这是堆栈跟踪:

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的程序?

0 个答案:

没有答案