异常处理Java
我正在学习异常处理,我想知道在以下情况下应该怎么做: 我希望我的输入是在一行,如:12 100(第一个是一个梳理,第二个是容量)。捕获异常的部分工作得很好(我主要希望防止用户输入错误类型的情况)。问题是,如果异常在第一个变量中,则程序会留下空行或打印错误,因为输入中仍然有一个或多个变量。这是我的密码:异常处理Java,java,oop,exception,exception-handling,Java,Oop,Exception,Exception Handling,我正在学习异常处理,我想知道在以下情况下应该怎么做: 我希望我的输入是在一行,如:12 100(第一个是一个梳理,第二个是容量)。捕获异常的部分工作得很好(我主要希望防止用户输入错误类型的情况)。问题是,如果异常在第一个变量中,则程序会留下空行或打印错误,因为输入中仍然有一个或多个变量。这是我的密码: private static void newCard(Scanner in) { try{ String cardId; int cardCapa
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);
}
}
它的作用是读取用户输入(其完整行),然后根据空格分隔字段,从而在您的案例中生成两个元素的字符串数组。然后我们可以很容易地引用该数组中的任意一个元素。之后,我们使用Integer.parseInt()将字符串转换为int(因为我们之前得到的结果是一个字符串数组,还记得吗?) 一种方法:每行输入并拆分。然后在一个不同的
try catch
块中处理每个值,以保留异常,稍后将其抛出,如下所示:
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);
}