A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 君子无醉 中级黑马   /  2015-5-23 04:23  /  780 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用户输入密码,要求密码满足长度大于6位,并且包含大小写和数字,如果不满足这些条件,就抛出MyException这个异常(MyException为自定义异常类,要求程序补货这个异常并作出相应的处理)

这是我写的代码,可以运行,并且各种情况都测试过了,满足题目要求,但我感觉有点繁琐,请大神帮我修改下,找到做这道题的最简方法,谢谢!
代码如下:
package MyException;

public class MyException extends Exception{
        public MyException(){
               
        }
        public MyException(String s){
                super(s);
        }
}




package MyException;

public class Admin {
        public static void check(String passWord) throws MyException {
                if (passWord.length() < 6) {
                        throw new MyException("输入的密码长度小于6位,请重新输入!");
                } else {
                        char[] chs = passWord.toCharArray();
                        int upper = 0;
                        int lower=0;
                        int digit=0;
                        for (char ch : chs) {
                                if (Character.isUpperCase(ch)) {
                                        upper++;
                                }
                                else if( Character.isLowerCase(ch)){
                                        lower++;
                                        }
                                else if(Character.isDigit(ch)){
                                        digit++;
                                        }
                               
                        }
                        if (upper>0&&lower>0&&digit>0) {
                                System.out.println("密码格式正确!");
                        }else {
                                throw new MyException("输入的密码不包含数字或大小写字母,请重新输入!");
                        }
                }
        }
}




package MyException;

import java.util.Scanner;

public class MyExceptionDemo {
        public static void main(String[] args) throws MyException{
                System.out.println("请输入你的登陆密码:");
                Scanner sc=new Scanner(System.in);
                String passWord=sc.nextLine();
                sc.close();
                Admin.check(passWord);
        }
}

3 个回复

倒序浏览
将check(String passWord) 方法改一下,用正则表达式比较简单,程序如下:
public static void check(String password)
{
        String regex = "\\w{5,}";

        boolean flag = password.matches(regex);

        if(flag)
                System.out.println("密码格式正确!");
        else
                        throw new MyException("密码格式错误,请重新输入!");
}

点评

谢谢 当时只想到了\\d 忘了你说的这个了,万分感谢!  发表于 2015-5-23 15:28
回复 使用道具 举报 1 0
二楼正解,正则表达式做起来很简单
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马