[英]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
块中处理每个值,以保留异常,以便稍后throw
其throw
:
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.