密码验证发出错误的输出?

时间:2016-10-30 02:49:39

标签: java string for-loop char passwords

我写的程序给了我错误的输出。它验证输入密码是否长度为6个字符,带有字母和数字,如果不满足其中一个要求,则应说“密码无效”。否则,它应输出“密码已接受”。但是当我输入超过6个字符长的密码时,虽然密码都是字母,但仍然说密码已被接受。

import java.util.*;
public class passwd {
    public static void main(String[] args)
    {
        String in_pass;
        int i = 0, x = 0, l = 0, d = 0;
        boolean valid_len;
        Scanner in = new Scanner(System.in);
        System.out.print("Enter Password: ");
        in_pass = in.next();
        int len = in_pass.length();
        valid_len = (len >= 6) ? true : false;
        char passwd_l;
        char passwd_d;
        if (valid_len == false)
        {
            System.out.println("Invalid Password");
        }
        else if (valid_len == true)
        {
            for (i = 0, x = 0; i < len; i++, x++)
            {
                passwd_l = in_pass.charAt(i);
                if (Character.isLetter(passwd_l))
                {
                    l += i;
                }
                passwd_d = in_pass.charAt(x);
                if (Character.isDigit(passwd_d))
                {
                    d += x;
                }
            }
        } 
        if (i > 0 && x > 0)
        {
            System.out.println("Password Accepted");
        } 
    } 
 }

1 个答案:

答案 0 :(得分:1)

看看这个!

else if (valid_len == true){
       for (i = 0; i < len; i++){
              passwd_l = in_pass.charAt(i);
              if (Character.isLetter(passwd_l))
              {
                    l ++;
              }
              if (Character.isDigit(passwd_l))
              {
                    d ++;
              }
       }
} 
if (l > 0 && d > 0){
       System.out.println("Password Accepted");
}