分别验证长度、是否满足规则、是否包含重复的长度大于二的字串

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            String pw = in.nextLine();
            if(getLength(pw) && getMatch(pw) && getStr(pw)){
                System.out.println("OK");
            }else {
                System.out.println("NG");
            }
        }
    }

    /**
     * 验证密码长度
     * @param pw
     * @return
     */
    public static boolean getLength(String pw){
        if(pw.length()<=8){
            return false;
        }else {
            return true;
        }
    }

    /**
     * 验证密码是否符合规则
     * @param pw
     * @return
     */
    public static boolean getMatch(String pw){
        int a = 0, b = 0, e = 0, d = 0;
        boolean err = true;
        char[] pws = pw.toCharArray();
        for (char c : pws) {
            if(c>='0' && c<='9'){
                a=1;
            } else if (c >= 'a' && c <= 'z') {
                b = 1;
            } else if (c >= 'A' && c <= 'Z') {
                d = 1;
            } else if (c == ' ' || c == '\n') {
                //存在空格或换行
                err = false;
                break;
            } else {
                e = 1;
            }
        }
        if(err){
            if((a+b+d+e)>=3){
                return true;
            }else {
                // 不包含至少三种情况
                return false;
            }
        }else {
            // 包含空格和换行符
            return false;
        }
    }

    /**
     * 验证是否有长度大于2的重复子字串
     * 没有 返回true,有则返回false
     * @return
     */
    public static boolean getStr(String pw){
        for (int i = 3; i < pw.length(); i++) {
            if(pw.substring(i).contains(pw.substring(i-3,i))){
                return false;
            }
        }
        return true;
    }
}