Java异常处理专用性
我认为如果我先展示我的代码,那么解释我的问题会更容易,所以这里是:Java异常处理专用性,java,exception,Java,Exception,我认为如果我先展示我的代码,那么解释我的问题会更容易,所以这里是: import java.util.Scanner; public class a{ public static void main(String[]args){ Scanner s = new Scanner(System.in); System.out.print("Enter either a, b, or c: "); try{ String
import java.util.Scanner;
public class a{
public static void main(String[]args){
Scanner s = new Scanner(System.in);
System.out.print("Enter either a, b, or c: ");
try{
String a = s.nextLine();
if (!a.equalsIgnoreCase("a")&&!a.equalsIgnoreCase("b")&&!a.equalsIgnoreCase("c")){
throw new IllegalArgumentException();
}
System.out.print("Entered letter: "+a);
}
catch (IllegalArgumentException b){
System.out.println("Invalid input. Only enter a, b, or c.");
}
}
}
我的问题是,有没有办法制作三(3)条不同的catch语句,以便在用户输入的错误消息中指定
我想到的数字错误是NumberF而不是创建三个单独的catch块,您可以将
catch修改为:
try {
String a = s.nextLine();
if (!a.equalsIgnoreCase("a") && !a.equalsIgnoreCase("b") && !a.equalsIgnoreCase("c")) {
throw new IllegalArgumentException(a); // observe this
}
System.out.print("Entered letter: " + a);
} catch (IllegalArgumentException ex) {
String input = ex.getMessage();
// check for spaces
if (input.trim().length() == 0) {
System.out.println("Only black spaces entered");
}
// check for numeric/special characters
else if (input.matches("^[0-9!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]*$")) {
System.out.println("User entered a non-letter character (number or symbol)");
}
// check if it isn't a, b or c
else if ((!input.trim().matches("a|b|c"))) {
System.out.println("User entered value other than a, b or c");
}
}
试试看{
字符串a=s.nextLine();
如果(!a.equalsIgnoreCase(“a”)和&!a.equalsIgnoreCase(“b”)和&!a.equalsIgnoreCase(“c”)){
抛出新的IllegalArgumentException(a);//注意这个
}
系统输出打印(“输入字母:+a”);
}捕获(IllegalArgumentException ex){
字符串输入=例如getMessage();
//检查是否有空格
if(input.trim().length()==0){
System.out.println(“仅输入黑色空格”);
}
//检查数字/特殊字符
else if(input.matches(“^[0-9!@$%^&*()\+\-=\[\\]{};”:\“\\\\\\\,.\/?]*$”){
System.out.println(“用户输入非字母字符(数字或符号)”;
}
//检查它是否不是a、b或c
如果(!input.trim().匹配(“a | b | c”)),则为else{
System.out.println(“用户输入的值,而不是a、b或c”);
}
}
请注意:
我们在抛出
例外情况
在catch
块中,我们获取用户输入的值
然后根据一些if条件打印出所需的
例外情况
您可以根据自己的方便调整catch逻辑中的条件,我希望您能理解其中的含义。此外,您可以创建一个单独的方法来处理异常,并从catch块调用它。您可以将一个带有详细信息的消息参数传递给IllegalArgumentException()
。我明白了,这看起来是解决我原来问题的更好办法。但是有没有办法指定用户输入的不是a、b或c的字母?我指的是第三个区别。a)空格,b)字母,但不是a、b或c;c)非字母字符(数字或符号)是的。你可以包括一个匹配数字和符号的正则表达式,还可以包括另一个if
块。也许我可以把它作为练习留给你?我不知道正则表达式是什么。也许我应该从那里开始。去搜索我已经通过包括该问题的答案让你的生活变得轻松了,看一看!不过,我推荐你学习一点正则表达式以完全理解编辑。