把对象放入集合ArrayList时候总是报错,怎么解决?

定义了一个方法,用于注册用户,但是最后把对象放入集合ArrayList时候总是报错,请教大家!

public static void registerUser(ArrayList list){
        Scanner sc = new Scanner(System.in);
        User u = new User();
            while (true) {
                System.out.println("请输入要注册的用户名");
                String user1 =sc.next();
                if(checkUserName(list,user1)){//检测该用户名是否已经存在
                    u.setUserName(user1);
                    break;
                }else{
                    System.out.println("您输入的用户名有误,请重新输入!");
                }
            }
        while (true) {
            System.out.println("请输入要注册的密码:");
            String password = sc.next();
            System.out.println("请再次输入要注册从密码:");
            String password1 = sc.next();
            if(password.equals(password1)){
                System.out.println("密码输入正确!");
                u.setPassword(password);
                break;
            }else{
                System.out.println("您输入的密码有误,请重新输入");
            }

        }
        while (true) {
            System.out.println("请输入要注册的身份证号");
            String idNumber =sc.next();
            if(checkIdNumber(idNumber)){//判断是否符合身份证的规定
                u.setIdNumber(idNumber);
                break;
            }else{
                System.out.println("您输入的身份证有误,请重新输入");
            }
        }
        while (true) {
            System.out.println("请输入要注册的手机号");
            String phoneNumber = sc.next();
            if(checkPhoneNumber(phoneNumber)){//判断是否符合电话号码的规范
                u.setIdNumber(phoneNumber);
            }else{
                System.out.println("您输入的手机号有误,请重新输入:");
            }
        }
        list.add(u);//就是这里!!!!!我想把u这个对象放到集合ArrayList中,但是就是这里总是报错,求教大家
    }

这不是报错,是不会执行这行代码
你最后一个while循环没有break,是死循环,这里就不会执行