繁体   English   中英

处理Java的异常

[英]Exceptions handling Java

我正在学习有关异常处理的信息,并且想知道在以下情况下该怎么办:

我希望我的输入成一行,例如:12 100(第一个是cardId,第二个是容量)。 带有捕获异常的部分工作正常(我主要是想防止用户输入错误类型的输入的情况)。 问题是,如果异常在第一个变量中,则程序将留空行或显示错误,因为输入中仍然有一个或多个变量。 那是我的代码:

    private static void newCard(Scanner in) {
    try{
        String cardId;
        int cardCapacity;
        cardId = in.next();
        cardCapacity = in.nextInt();
    }
    catch(Exception e){
        System.out.println(WRONG_INPUT_TYPE);
    }
}

你能帮我一下吗? 谢谢!

要使您的输入成为一行,您可以执行以下操作:

private static void newCard(Scanner in) {
    try {
        String cardId;
        int cardCapacity;
        String[] input = in.next().split(" ");
        cardId = input[0];
        cardCapacity = Integer.parseInt(input[1]);
    } catch(Exception e){
        System.out.println(WRONG_INPUT_TYPE);
    }
}

它的作用是读出用户输入(它们的全行),然后根据空格分隔字段,从而在您的情况下生成包含两个元素的String数组。 然后,我们可以轻松地引用该数组中的任何一个元素。 之后,我们使用Integer.parseInt()将String转换为int(因为我们之前的结果是String数组,还记得吗?);)

一种方法:每行输入一次并拆分。 然后在不同的try-catch块中处理每个值,以保留异常,以便稍后throwthrow

Exception inputEx = null;   
try{
    String line = in.nextLine();
    String[] data = line.split("\\s+");
    try{ cardId = data[0]; } catch(Exception e){inputEx = e;}
    try{ cardCapacity = Integer.valueOf(data[1]); } catch(Exception e){inputEx = e;}
    if (inputEx != null) throw inputEx;
}
catch(Exception e){
    System.out.println(WRONG_INPUT_TYPE);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM