![](/img/trans.png)
[英]How to check whether a string contains lowercase letter, uppercase letter, special character and digit?
[英]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.