Java创建验证密码的程序
我必须编写密码验证程序
您将拥有以下方法:
main(字符串[]):调用getValidPassword
getValidPassword():检查密码是否具有所有条件,如果有效,则打印确认语句,否则打印无效语句并接受新密码
checkLength(String):如果密码字符串符合长度标准,则返回true,否则返回false
checkUpperCase(String):如果密码字符串具有足够的大写字母,则返回true,否则返回false
checkLowerCase(String):如果密码字符串包含足够的小写字母,则返回true,否则返回false
checkNumbers(String):如果密码字符串具有足够的数字,则返回true,否则返回false
上述列表的格式如下:
methodName(listOfParameterTypes):功能和返回值(如果有) 请确保严格按照本实验室给出的方法名称
- 这是我的代码。我的问题是密码错误的情况。怎样 要让它获得另一个输入。。。直到用户输入符合列表要求的正确密码强>
在这里输入代码
import java.util.Scanner;
public class PasswordValidator {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String password=sc.nextLine();
getValidPassword(password);
}
public static void getValidPassword(String password) {
boolean valid;
if ( checkLength(password) && checkUpperCase(password) && checkLowerCase
(password) && checkNumbers(password) ) {
System.out.print("Password accepted");
valid=true;
}
else {
System.out.print("Invalid password, try again");
valid=false;
}
}
//checks PASSWORDS length
public static boolean checkLength(String password) {
boolean length;
if (password.length() >= 8 ) {
length=true;
}
else {
length=false;
}
return length;
}//finish length check
//checks uppercase
public static boolean checkUpperCase(String password) {
int j=0;
boolean upper;
//count uppercases
String word=password.toUpperCase();
for (int i=0; i<password.length(); ++i) {
if (password.charAt(i)==word.charAt(i)) {
++j;
}
else {
j=j;
}
}
if (j>=2) {
upper=true;
}
else {
upper=false;
}
return upper;
}//finish uppercase check
//checks lowercase
public static boolean checkLowerCase(String password) {
int j=0;
String word=password.toLowerCase();
boolean low;
//count lower cases
for (int i=0; i<password.length(); ++i) {
if (password.charAt(i)==word.charAt(i)) {
++j;
}
else {
j=j;
}
}
if (j>=1) {
low=true;
}
else {
low=false;
}
return low;
}//finish lowercase
//check numbers
public static boolean checkNumbers(String password) {
int j=0;
boolean num;
for (int i=0; i<password.length(); ++i) {
if (Character.isDigit(password.charAt(i))) {
++j;
}
else {
j=j;
}
}
if (j>=2) {
num=true;
}
else {
num=false;
}
return num;
}//finish numbers
}
# 1 楼答案
# 2 楼答案
把所有的IO分离出来,集中精力在方法上
使用JUnit而不是命令行输入测试它