密码验证器
Password Validator
我目前正在尝试使用布尔方法制作密码验证器,因为老师要求我们这样做。这让我抓狂。为确保密码正确,密码需要有一个大写字母、一个小写字母、至少 10 个字符和一个数字。我现在知道,我的方法 returns 完全具有 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;
}
}
我建议您首先创建多个 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);
}
由于此方法中只有一个 return,它显式 return 为 false,因此此方法将始终 return false。
方法一:
定义一个布尔值,它将在方法的最后一条语句中被 returned。此布尔值默认为 true,如果一个条件错误,将设置为 false。
方法二:
最后一条语句是隐含的 return true 语句,只要条件未满足 return false。这将阻止该方法执行更多测试。
方法三:
使方法看起来像这样
if (containsUpperCase(string) && contains...)
return true;
return false;
我目前正在尝试使用布尔方法制作密码验证器,因为老师要求我们这样做。这让我抓狂。为确保密码正确,密码需要有一个大写字母、一个小写字母、至少 10 个字符和一个数字。我现在知道,我的方法 returns 完全具有 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;
}
}
我建议您首先创建多个 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);
}
由于此方法中只有一个 return,它显式 return 为 false,因此此方法将始终 return false。
方法一: 定义一个布尔值,它将在方法的最后一条语句中被 returned。此布尔值默认为 true,如果一个条件错误,将设置为 false。
方法二: 最后一条语句是隐含的 return true 语句,只要条件未满足 return false。这将阻止该方法执行更多测试。
方法三: 使方法看起来像这样
if (containsUpperCase(string) && contains...)
return true;
return false;