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

© qwerty123321 中级黑马   /  2016-6-7 22:43  /  316 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.heima.test;

import java.util.Scanner;

public class Test1 {

        /**
         * 题目分数:7分
         * 建议时间:10分钟
         *
         * 题目要求:
         * 编写一个注册用户的程序,要求检测用户输入的用户名和密码是否合法,先输入用户名,检测不合法则要求重新输入,再输入密码,不合法则要求重新输入
         *         1、用户名要求:用户名必须是6-10位之间的字母或者数字并且不能以数字开头
         *         2、密码要求:密码长度在6-10位之间,密码中必须且只能包含英文大小写、数字
         */
        public static void main(String[] args) {
                /**
                 * 思路:
                 *         1、创建一个键盘输入对象
                 *         2、两个并列的循环,分别控制用户名和密码的判断流程
                 */
                Scanner sc = new Scanner(System.in);
               
                System.out.println("来个用户名");
                String userName;
                String passWord;
                while(true){
                        userName = sc.nextLine();
                        //如果不合法,就重新输入,如果合法,就直接跳出循环
                        if(!isUserNameValid(userName)){
                                System.out.println("用户名不合法,重来");
                                continue;
                        }
                        break;
                }
                System.out.println("用户名合法,恭喜");
                System.out.println("来个密码");
                while(true){
                        passWord = sc.nextLine();
                        //如果不合法,就重新输入,如果合法,就直接跳出循环
                        if(!isPassWordValid(passWord)){
                                System.out.println("密码不合法,重来");
                                continue;
                        }
                        break;
                }
                System.out.println("注册成功,用户名是:" + userName + "   密码是:" + passWord);
        }
        /**
         * 2、密码要求:密码长度在6-10位之间,密码中必须且只能包含英文大小写、数字
         */
        private static boolean isPassWordValid(String passWord) {
                //判断长度是否合法
                int length = passWord.length();
                if(length < 6 || length > 10){
                        return false;
                }
                //判断密码中是否全是字母或者数字
                if(!isNumberOrEng(passWord)){
                        return false;
                }
                //判断密码中是否包含字母
                if(!containsEng(passWord)){
                        return false;
                }
                //判断密码中是否包含数字
                if(!containsNum(passWord)){
                        return false;
                }
                //如果所有不合法的情况都排除,就说明密码是合法的
                return true;
        }
        /**
         * 判断密码是否包含数字
         */
        private static boolean containsNum(String passWord) {
                //先把字符串转成字符数组
                char[] arr = passWord.toCharArray();
                //遍历字符数组,逐个字符进行判断
                for (char c : arr) {
                        //如果找到了数字,就直接返回true
                        if (c >= '0' && c <= '9'){
                                return true;
                        }else{//如果当前字符不是数字,就继续下次判断
                                continue;
                        }
                }
                //如果所有的字符都判断完成,都没有返回true,就说明没有数字
                return false;
        }
        /**
         * 判断密码中是否有英文字母
         * 思路:和判断是否有数字相同,不再赘述
         */
        private static boolean containsEng(String passWord) {
               
                char[] arr = passWord.toCharArray();
                for (char c : arr) {
                        if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z'){
                                return true;
                        }else {
                                continue;
                        }
                }
                return false;
        }
        /**
         * 判断用户名是否合法
         */
        private static boolean isUserNameValid(String userName) {
                //先判断长度
                int length = userName.length();
                if(length < 6 || length > 10){
                        return false;
                }
                //判断用户名中是否全是数字或者字母
                if(!isNumberOrEng(userName)){
                        return false;
                }
                //判断首字母是否是数字,如果是数字就返回false
                char[] arr = userName.toCharArray();
                if(arr[0] >= '0' && arr[0] <= '9'){
                        return false;
                }
                //如果所有的情况都判断完成,就说明用户名合法
                return true;
               
        }
        /**
         * @param userName
         * @return
         */
        private static boolean isNumberOrEng(String userName) {
                //转换成字符数组
                char[] arr = userName.toCharArray();
                //遍历字符数组
                for (char c : arr) {
                        //如果某一个字符符合要求,就判断下一个字符
                        if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9'){
                                continue;
                        }else{
                                //如果某一个字符不符合要求,就直接认为该字符串不合法
                                return false;
                        }
                }
                //如果所有的字符都经过了判断,还没有return false,就说明这个字符串是合法的,没有非法的字符
                return true;
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马