简单密码验证(java)

2018/2/3

java

要求

1.用户名最多25个字符,不能包含空格,单双引号,问号等特殊符号

2.密码要6到18位,只能包含字母数字,特殊符号

 注意判断密码强度:

 1.只为纯数字纯字母为2星

  2.为字母加数字,字母加符号,符号加数字为4星

  3.三者都有为6星

package package1;
/*用户类,设计用户的用户名,密码*/
public class User
{
	
private String userName;
private String passWord;


public User(String userName,String Password,String email)
{
	setUserName(userName);
	setPassWord(Password);
	
}
public String getUserName() 
{
	return userName;
}
public void setUserName(String userName) 
{
	this.userName = userName;
}
public String getPassWord()
{
	return passWord;
}
public void setPassWord(String passWord)
{
	this.passWord = passWord;
}


}

package package1;

import java.util.Scanner;

public class userMain {
public static void main(String[] args)
/*实现用户注册*/
{
	/*初始化*/
	Scanner input=new Scanner(System.in);
	System.out.println("请输入用户名");
	
	String userName=input.next();
	System.out.println(stringutil.isCorrectUserName(userName));
	
	System.out.println("请输入密码");
	String password=input.next();
	System.out.println(stringutil.vaildatePassword(password));
	
	
	
	
	
	
}
}
package package1;
/*字符串的工具类,用于封装对字符串判断的方法*/
public class stringutil 
{
//1.用户名最多25个字符,不能包含空格,单双引号,问号等特殊符号
	public static boolean isCorrectUserName(String userName)
	{
		boolean isCorrect=true;
		if(userName==null) return false;
		if(userName.length()>25) return false;
		/*定义非法的字符数组,单引号要用\'表示*/
		char[] unvaildChar= {' ','\'','"','?','*','~',','};
		for(char ch:unvaildChar)
		{
			if(userName.contains(Character.toString(ch)))
			{
				System.out.println("存在非法字符");
				isCorrect=false;
				break;
				
			}
		}
		System.out.println("账号输入正确");
		return isCorrect;
	}
	/*2.密码要6到18位,只能包含字母数字,特殊符号
	 * 纯数字,纯字母时,密码强度为弱
	 * 数字加字母,数字加符号,字母加符号时,密码强度为中
	 *数字加字母加符号时,密码强度为强 */
	public static String  vaildatePassword(String password)
	{
		/*密码强度*/
		String power="";
		if(password==null) return power;
		if(password.length()<6||password.length()>18) return power;
		/*合法的组成部分*/
		//String[]collectPart= {"_","@","&","#","$","."};
		String part="@&#$,.";
		for(int i=0;i<password.length();i++)
		{
			/*如果不为字母和数字*/
			if(!(Character.isLetterOrDigit(password.charAt(i))))
			{
				if(!(part.contains(Character.toString(password.charAt(i)))))
				{
					System.out.println("密码不合法");
					return power;
				}
			}
				
		}
		/*纯数字或纯字母*/
		if(isDigit(password)||isletter(password))
		{
		   System.out.print("密码强度为");
			power="★★☆☆☆☆";
		}
		else if(isDigitAndLetter(password))
		{
			 System.out.print("密码强度为");
				power="★★★★☆☆";
		}
		else if(isContainssymble(password))
		{
			System.out.println("密码强度为");
			power="★★★★★★";
		}
		
		/*字符串中包含合法的字母和数字*/
		
				return power;
	}
	/*判断密码强度*/
	/*判断字符串是不是纯数字*/
	private static boolean isDigit(String value)
	{
		
		for(int i=0;i<value.length();i++)
		{
			if(!Character.isDigit(value.charAt(i)))
			{
				return false;
			}
		}
		return true;
	}
	
	/*判断字符串是不是纯字母*/
	private static boolean isletter(String value)
	{
		
		for(int i=0;i<value.length();i++)
		{
			if(!Character.isLetter(value.charAt(i)))
			{
				return false;
			}
		}
		return true;
	}
	/*有没有包含特殊符号*/
	    
	private static boolean isContainssymble(String value)
	{
		
		String part="@&#$,.";
		for (int i = 0; i < value.length();i++)
		{
			if(part.contains(Character.toString(value.charAt(i))))
			{
				return true;
			}
			
		}
		return false;
	}
	/*是否包含数字和字母*/
	private static boolean isDigitAndLetter(String value)
	{
		for(int i=0;i<value.length();i++)
		{
			if(!(Character.isLetterOrDigit(value.charAt(i))))
			{
				return false;
			}
		}
		return true;
	}
	/*是否包含数字字母和特殊符号*/
	
	}
	




发布了204 篇原创文章 · 获赞 75 · 访问量 13万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览