好吧所以我正在制作一个密码检查程序,并且有一些规则。 密码必须是8个或更多字符 密码必须包含2位或更多位数 密码只能是字母和数字 这是我到目前为止所拥有的 我如何检查2位数字,仅查看字母和数字?感谢
import java.util.Scanner;
public class checkPassword {
public static boolean passwordLength(String password) {
boolean correct = true;
int digit = 0;
if (password.length() < 8) {
correct = false;
}
return correct;
}
public static void main(String[] args) {
// Nikki Kulyk
//Declare the variables
String password;
Scanner input = new Scanner(System.in);
//Welcome the user
System.out.println("Welcome to the password checker!");
//Ask the user for input
System.out.println("Here are some rules for the password because we like to be complicated:\n");
System.out.println("A password must contain at least eight characters.\n" +
"A password consists of only letters and digits.\n" +
"A password must contain at least two digits.\n");
System.out.println("Enter the password: ");
password = input.nextLine();
boolean correct = passwordLength(password);
if (correct) {
System.out.println("Your password is valid.");
}
else {
System.out.println("Your password is invalid.");
}
}
}
答案 0 :(得分:0)
开始阅读并使用java中的模式,正则表达式。下面的链接有很好的解释,你可以找到很多例子。我希望这是你正在寻找的解决问题的方法。 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
答案 1 :(得分:0)
我也会建议使用正则表达式,但作为一名新程序员,他们可能很难理解。一个好的启动方法是将密码转换为字符数组,然后使用Character.isLetterOrDigit(c)
并计算位数。
答案 2 :(得分:0)
正则表达式是首选武器,解决方案可以简化为单个方法调用:
boolean correct = password.matches("(?=(.*\\d){2})[a-zA-Z0-9]{8,}");
答案 3 :(得分:0)
这是一个解决方案。它效率不高,但对初学者应该有所帮助。它将问题分解为步骤。密码的每个要求都是一步一步测试的。如果在任何时候违反了其中一个要求,则该方法返回false;一旦我们确定密码无效,就没有必要进行更多检查。
该方法首先检查长度(如上所述)。然后它使用for循环来计算String中的位数。接下来,它使用正则表达式来确保密码中只包含字母数字字符。在测试String是否为字母数字时,请注意逻辑否定(!)运算符。如果String not 只包含字母和数字,则返回false。
包含评论以说明和澄清逻辑。祝你好运。
public static boolean passwordLength(String password) {
/* Declare a boolean variable to hold the result of the method */
boolean correct = true;
/* Declare an int variable to hold the count of each digit */
int digit = 0;
if (password.length() < 8) {
/* The password is less than 8 characters, return false */
return false;
}
/* Declare a char variable to hold each element of the String */
char element;
/* Check if the password has 2 or more digits */
for(int index = 0; index < password.length(); index++ ){
/* Check each char in the String */
element = password.charAt( index );
/* Check if it is a digit or not */
if( Character.isDigit(element) ){
/* It is a digit, so increment digit */
digit++;
} // End if block
} // End for loop
/* Now check for the count of digits in the password */
if( digit < 2 ){
/* There are fewer than 2 digits in the password, return false */
return false;
}
/* Use a regular expression (regex) to check for only letters and numbers */
/* The regex will check for upper and lower case letters and digits */
if( !password.matches("[a-zA-Z0-9]+") ){
/* A non-alphanumeric character was found, return false */
return false;
}
/* All checks at this point have passed, the password is valid */
return correct;
}