黑马程序员技术交流社区

标题: 寻求这道题的最简方法 [打印本页]

作者: 君子无醉    时间: 2015-5-23 04:23
标题: 寻求这道题的最简方法
用户输入密码,要求密码满足长度大于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);
        }
}
作者: wangkai    时间: 2015-5-23 07:02
将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("密码格式错误,请重新输入!");
}
作者: 王建伟    时间: 2015-5-23 07:54
二楼正解,正则表达式做起来很简单




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2