Java密码校验:使用substring()替代charAt()方法
如果不想使用 'password.charAt(i)' 来访问密码中的每个字符,可以使用字符串的 'substring()' 方法来获取特定索引位置的子字符串,然后使用字符串的 'charAt()' 方法来获取子字符串中的单个字符。以下是相应的代码示例:
import java.util.Scanner;
public class PasswordChecker {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String password;
do {
System.out.print("请输入密码:");
password = scanner.nextLine();
if (password.length() < 8) {
System.out.println("密码长度至少为8个字符!");
} else if (!containsLetterAndDigit(password)) {
System.out.println("密码必须同时包含字母和数字!");
}
} while (password.length() < 8 || !containsLetterAndDigit(password));
System.out.println("密码有效!");
}
public static boolean containsLetterAndDigit(String password) {
boolean hasLetter = false;
boolean hasDigit = false;
for (int i = 0; i < password.length(); i++) {
String character = password.substring(i, i + 1);
char c = character.charAt(0);
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
hasLetter = true;
} else if (c >= '0' && c <= '9') {
hasDigit = true;
}
if (hasLetter && hasDigit) {
return true;
}
}
return false;
}
}
在这个示例中,我们使用 'substring()' 方法获取密码中特定索引位置的子字符串,然后使用 'charAt(0)' 方法获取子字符串中的第一个字符。然后,我们使用条件语句来检查字符是否是字母或数字,并相应地更新 'hasLetter' 和 'hasDigit' 的值。如果在遍历过程中同时找到了字母和数字,我们返回 'true' 表示密码有效。否则,我们返回 'false' 表示密码无效。循环会一直进行,直到用户输入一个有效密码为止。
原文地址: https://www.cveoy.top/t/topic/och 著作权归作者所有。请勿转载和采集!