密码检查,验证和要求

时间:2018-05-23 05:40:08

标签: java passwords verification

我有一个问题,需要至少2个大写字母,至少2个小写字母和2个数字。

这是确切的问题:

  

编写一个应用程序,提示用户输入包含至少两个大写字母,至少两个小写字母和至少两个数字的密码。输入密码后,显示一条消息,指示用户是否成功或用户未成功的原因。

     

例如,如果用户输入“密码”,您的程序应输出:   您的密码无效,原因如下:   大写字母   数字

     

如果用户输入“P4SSw0rd”,您的程序应输出:   有效密码

到目前为止,这是我的编码,我遇到了包含输出行的问题。例如,如果某人没有2个大写字母且没有2个字母。写1个字母时,它不包括输出中的两个失败。

import java.util.Scanner;
public class ValidatePassword {
  public static void main(String[] args) {
    String inputPassword;
    Scanner input = new Scanner(System.in);
    System.out.print("Password: ");
    inputPassword = input.next();
    System.out.println(PassCheck(inputPassword));
    System.out.println("");
  }

  public static String PassCheck(String Password) {
    String result = "Valid Password";
    int length = 0;
    int numCount = 0;
    int capCount = 0;
    for (int x = 0; x < Password.length(); x++) {
      if ((Password.charAt(x) >= 47 && Password.charAt(x) <= 58) || (Password.charAt(x) >= 64 && Password.charAt(x) <= 91) ||
        (Password.charAt(x) >= 97 && Password.charAt(x) <= 122)) {
      } else {
        result = "Password Contains Invalid Character!";
      }
      if ((Password.charAt(x) > 47 && Password.charAt(x) < 58)) {
        numCount++;
      }
      if ((Password.charAt(x) > 64 && Password.charAt(x) < 91)) {
        capCount++;
      }
      length = (x + 1);
    }
    if (numCount < 2) {
      result = "Not Enough Numbers in Password!";
    }
    if (capCount < 2) {
      result = "Not Enough Capital Letters in Password!";
    }
    if (length < 2) {
      result = "Password is Too Short!";
    }
    return (result);
  }
}

1 个答案:

答案 0 :(得分:1)

如果我理解你想要做什么,当你输入例如“密码”时,你没有2个大写字母和2个数字,所以你的输出应该是这样的: “密码中没有足够的数字!密码中没有足够的大写字母!”。 我建议2个解决方案:

  1. 如果要将一个String添加到另一个使用+,因为您用另一个覆盖了第一个结果值。但这不是最佳解决方案,因为每次向String添加值时,都会在String池上创建新的String。更多信息: https://stackoverflow.com/a/1553110/6003541

    result += "Password is Too Short!";
    

    result = result + "Password is Too Short!";
    
  2. 我建议使用StringBuilder。使用方法“append”添加结果,最后返回StringBuilder对象的toString()值。

    StringBuilder sb = new StringBuilder(); 
    if (numCount < 2) {
      sb.append("Not Enough Numbers in Password!");
      sb.append(System.getProperty("line.separator"));
    }
    if (capCount < 2) {
      sb.append("Not Enough Capital Letters in Password!");
      sb.append(System.getProperty("line.separator"));
    }
    if (length < 2) {
      sb.append("Password is Too Short!");
    }
    
    return sb.toString();
    
相关问题