繁体   English   中英

密码检查程序-检查大写,小写字母,数字和特殊字符

[英]Password Check Program - checking capitals, lowercase letters, digit and special character

我的作业要求我创建一个密码检查程序。

密码必须至少包含8个字符,并且包含大写和小写字母,数字和特殊字符。

我相信我已经快要解决这个问题了,但是我的技能仍在发展,并且碰壁了。

package project1;

/**
 *
 * @author danechristian
 */
import java.util.*;
public class Project1 
{
    static Scanner console = new Scanner(System.in);
    static final String SPECIAL_CHARACTERS = "!,#,$,%,^,&,*,|";
    static String password;

    public static void main(String[] args) 
    {

        System.out.println("Create a password: ");
        password = console.next();

        if (validPassword(password))
        {
            System.out.println("Password Saved");
        }
        else
        {
            System.out.println("Invalid Passowrd. Password "
                    + "must contain atleast 1 capital letter"
                    + "1 lower case letter, 1 digit, 1"
                    + "special character (!#$%^&*|) and "
                    + "be atleast 8 characters long");
        }
    }

public static boolean validPassword(String password)
    {
        boolean upCase = false;
        boolean loCase = false;
        boolean isDigit = false;
        boolean spChar = false;

        if (password.length() >= 8)
           {
            for (int i = 0; i < password.length() - 1; i++)
               {
                if (Character.isUpperCase(password.charAt(i)))
                {
                    upCase = true;
                }

                if (Character.isLowerCase(password.charAt(i)))
                {
                    loCase = true;
                }

                if (Character.isDigit(password.charAt(i)))
                {
                    isDigit = true;
                }

                if (SPECIAL_CHARACTERS.contains(password))
                {
                    spChar = true;
                }
               } 
           }         
        return (upCase && loCase && isDigit && spChar);
    }   

}

为了检查有这样的事情:

public static boolean validPassword(String password){
        boolean upCase = false;
        boolean loCase = false;
        boolean isDigit = false;
        boolean spChar = false;
     if (password.length()>7){
          if (password.matches(".+[A-Z].+")){
              upCase = true;
          }
          if (password.matches(".+[a-z].+")){
              loCase = true;
          }
          if (password.matches(".+[1-9].+")){
              isDigit = true;
          }
          if (SPECIAL_CHARACTERS.contains(password)){
               spChar = true;
          }
     }
  return (upCase && loCase && isDigit && spChar);
} 

通过改变解决

如果(SPECIAL_CHARACTERS.contains(password)){spChar = true;

如果(SPECIAL_CHARACTERS.contains(password.substring(i,i + 1))){spChar = true;

这会检查字符串中的字符串。

另外,我从for语句中删除了“ -1”,以便使边界正确无误。 还从SPECIAL_CHARACTERS常量中删除了逗号。

该程序现在可以正常运行了,谢谢大家的建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM