问题描述:要求用户注册用户名时,如果注册的名字已经存在,则产生注册异常且提示:该名字已被注册!
如果注册的名字不存在,则提示:恭喜您,注册成功!
问题分析:1.用数组保存已经注册过的用户名
2.通过Scanner获得用户想要注册的名字(后期应该改成界面获取)
3.将改名字与数组中已经注册过的名字一一比较,若有相同的,则产生异常
代码编写:
1.通过throws 异常来处理:
//自定义异常必须继承Exception或者RuntimeException //有两个构造方法,分别是无参构造和有参构造 //自定义MyRegistException异常 public class MyRegistException extends Exception { public MyRegistException(){ super(); } public MyRegistException(String message){ super(message); } }
//用户注册类 public class UserRegist { public static void main(String[] args) throws MyRegistException { String[] users={"张三","李四","王五"}; Scanner sc=new Scanner(System.in); System.out.println("请输入您的注册名:"); String name=sc.next(); for(String userName : users){ if(userName.equals(name)){ throw new MyRegistException("该名字已被注册!"); } } System.out.println("恭喜您,注册成功!"); } }
2.通过try-catch来处理:
(1)自定义MyRegistException不变。
(2)用户注册类:
public class UserRegist { public static void main(String[] args) { String[] users={"张三","李四","王五"}; Scanner sc=new Scanner(System.in); System.out.println("请输入您的注册名:"); String name=sc.next(); for(String userName : users){ if(userName.equals(name)){ try { throw new MyRegistException("该名字已被注册!"); } catch (MyRegistException e) { e.printStackTrace(); //注意要在捕获异常之后退出方法,否则下面的成功提示也会打印! return; } } } System.out.println("恭喜您,注册成功!"); } }
结果展示:
(1)未被注册:
(2)已被注册: