我目前正在尝试使用布尔方法设置密码验证器,因为老师要求我们这样做。这让我疯了。要正确,密码需要有一个大写,一个小写字母,至少10个字符和一个数字。我现在知道,我的方法完全返回值false,但是我想知道如果我有一个大写或一个小写,我怎么能破坏代码。
非常感谢你的帮助!
public class AtLeast1UppercaseLowercaseNumber {
public static void main(String[] args){
String password = "H";
System.out.println(password);
if(isSecurePassword(password)){
System.out.println("Yay it works");}
else {
System.out.println("you suck");}
}
public static isSecurePassword(String password) {
int uppercase = 0, lowercase = 0, number = 0;
for(int i=0; i<password.length(); i++) {
for(char c ='A'; c <='Z'; c++) {
if(password.charAt(i) == c) {
uppercase++;
if( uppercase >= 1) {
for(char t = 'a'; t <='z'; t++) {
if(password.charAt(i) == t) {
lowercase++;
if(lowercase >= 1) {
}
}
}
for(int j = '0'; j <='9'; j++) {
if(password.charAt(i) == j) {
number++;
if( number >= 1) {
}
}
}
}
return false;
}
}
答案 0 :(得分:0)
我建议您首先创建多个private
和static
测试方法,然后使用public
isSecurePassword(String)
方法委托。实施boolean oneUpper(String)
,boolean oneLower(String)
,boolean oneDigit(String)
和boolean tenCharacters(String)
等测试方法作为示例
private static boolean tenCharacters(String str) {
return str.length() > 9;
}
和第二个例子
private static boolean oneUpper(String str) {
for (char ch : str.toCharArray()) {
if (Character.isUpperCase(ch)) {
return true;
}
}
return false;
}
然后您的isSecurePassword(String)
只是
public static boolean isSecurePassword(String str) {
return tenCharacters(str) && oneUpper(str) && oneLower(str)
&& oneDigit(str);
}
答案 1 :(得分:0)
由于此方法中只有一个返回显式返回false,因此此方法将始终返回false。
方法1: 定义一个布尔值,它将在方法的最后一个语句中返回。默认情况下,此布尔值为true,如果一个条件错误,则设置为false。
方法2: 最后一个语句是隐式返回true语句,并且每当条件未完全填充时返回false。这将阻止该方法执行更多测试。
方法3: 使方法看起来像这样
if (containsUpperCase(string) && contains...)
return true;
return false;