package _2017_01;//包名
import java.util.InputMismatchException;//以import开头的都死导包格式;
import java.util.Scanner;
/**
* 1.定义方法完成用户注册功能,要求姓名在2个字符以上,年龄在1~120岁之间,
* 通过异常处理方式控制用户的注册信息
*/
public class RegisterTest extends Exception {
private String name;
private int age;
private Scanner input=new Scanner(System.in);
public static void main(String[] args) {
RegisterTest rt = new RegisterTest();
rt.setName();
rt.setAge();
}
public void setName() {
System.out.println("请输入你的姓名:");
while (true){
try {
name = input.next();
if (name.length() <= 2) {
throw new IndexOutOfBoundsException("名字过短");
}
break;
} catch (IndexOutOfBoundsException e) {
System.out.println(e.getMessage());
}catch(Exception e){
System.out.println("出现未知错误");
}finally{
}
}
}
public void setAge() {
System.out.println("请输入你的年龄:");
while (true){//while true是一种全真模式,一直运行,直到有break强行停止;
try {
age= input.nextInt();//age的声明要放在系统之外,定义为全局变量,否则某些地方拿不到;
if (age<1||age>120) {
//具体的某个操作子类型,IndexOutOfBoundsException;
throw new IndexOutOfBoundsException("年龄超出规定范围,请输入整数");
}
break;
} catch (IndexOutOfBoundsException e) {
System.out.println(e.getMessage());
}catch(InputMismatchException e){
System.out.println("输入类型不正确");
input.next();//在循环中,input.next();只能够和InputMismatchException匹配,用来清除缓存,否则就无限循环;
//而且循环要一直执行到满足条件为止;
}catch(Exception e){//Exception是所有错误的根类,放在最后,作为最后一重保障;
System.out.println("出现未知错误");
break;
}finally{
}
}
}
}
【典型例题】报错
最新推荐文章于 2024-07-24 20:28:08 发布