如果不想使用 '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' 表示密码无效。循环会一直进行,直到用户输入一个有效密码为止。

Java密码校验:使用substring()替代charAt()方法

原文地址: https://www.cveoy.top/t/topic/och 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录