您如何编写一个需要密码才能满足某些要求的方法?

时间:2018-12-11 23:08:28

标签: java methods passwords

方法validatePW:

不接受任何参数,也不返回任何参数。

PW政策:必须至少4个字符长            至少包含两个大写字母            至少一个号码。

如果PW不符合政策,则会引发异常。

2 个答案:

答案 0 :(得分:1)

validatePW方法可能存在于User类中,该类大致如下所示:

class User {
    private int Id;
    private String Password;
    // ... other class variables, constructor, getters/setters
    public void validatePW() {
        int pwLength = this.Password.length();
        if (pwLength < 4) {
            throw new InvalidArgumentException("Password is too short.");
        }
        int upperCase = 0;
        int lowerCase = 0;
        int number = 0;
        for (int i = 0; i < pwLength; i++) {
            Character c = this.Password.charAt(i);
            if (c.isUpperCase()) upperCase++;
            if (c.isLowerCase()) lowerCase++;
            if (c.isDigit()) number++;
        }

        if (upperCase == 0) {
            throw new InvalidArgumentException("Password requires at least 1 upper case letter.");
        }

        if (lowerCase == 0) {
            throw new InvalidArgumentException("Password requires at least 1 lower case letter.");
        }

        if (number == 0) {
            throw new InvalidArgumentException("Password requires at least 1 number.");
        }
    }
}

答案 1 :(得分:1)

您应该考虑阅读The Java™ Tutorials,尤其是Defining MethodsExceptions上的章节,因为这些是您完成此作业应熟悉的基础知识。

有多种方法可以完成此任务,这只是一个示例:

import java.util.Scanner;
import java.lang.IllegalArgumentException;


public class Q53733706 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Password: ");
        String password = input.nextLine();
        validatePW(password);
    }

    // Method validatePW:
    static void validatePW(String p){
        int upperCase = 0;
        int isDigit = 0;

        for (int k = 0; k < p.length(); k++) {
            if (Character.isDigit(p.charAt(k))) isDigit++;
            if (Character.isUpperCase(p.charAt(k))) upperCase++;
        }

        if ((p.length() < 4) || (upperCase < 1) || (isDigit < 1)){
             throw new IllegalArgumentException("Invalid password.");
        }
        else{
            System.out.println("Valid password.");
        }
    }    
}

调整条件检查以符合您的特定“ PW政策”,因为问题中目前尚不清楚这些检查。