我对Java非常陌生,并且已经练习了好几天了。这个练习的目标是在不使用正则表达式的情况下验证密码。
本练习的要求是:通过控制台,要求用户按照以下要求创建密码。密码必须包含:○至少一个小写字母○至少一个小写字母 ○至少7个字符○至少12个字符 * ○感叹号:! ●如果用户满足所有要求,则将字符串“Password valid and accepted”打印到控制台●如果密码不满足任何要求,则打印字符串“Error“。
我的问题是,我不能得到设置的最大和最小长度的密码要求为7分钟和12最大。我也有麻烦添加“!”作为密码要求。有人可以请指导我在正确的方向?
Via the console, ask the user to create a password with the following requirements.
字符串
密码必须包含:○至少一个密码字母○至少一个密码字母○最少7个字符○最多12个字符○感叹号:!●如果用户满足所有要求,则将字符串“Password valid and accepted”打印到控制台●如果密码不满足任何要求,则打印字符串“Error“。
import java.util.Scanner;
public class WhatToEat {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* At Least One Lower case
* At Least one Upper case
* At least 7 Characters minimum
* At least 12 characters maximum
* Exclamation mark required
*/
final int MIN_LENGTH = 7;
final int MAX_LENGTH = 12;
final int NUM_UPPER_LETTERS = 1;
final int NUM_LOWER_LETTERS = 1;
final int NUM_DIGITS =0;
int minLength = 0;
int maxLength = 0;
int upperCount = 0;
int lowerCount = 0;
int digitCount = 0;
try (Scanner in = new Scanner(System.in)) {
System.out.print("Enter Password Here:");
String input = in.nextLine();
int inputLen = input.length();
for (int i = 0; i < inputLen; i++) {
char ch = input.charAt(i);
if (Character.isUpperCase(ch))
upperCount++;
else if (Character.isLowerCase(ch))
lowerCount++;
else if (Character.isDigit(ch))
digitCount++;
else if (Character.isDigit(ch))
minLength++;
else if (Character.isDigit(ch))
maxLength++;
}
}
if(upperCount <= NUM_UPPER_LETTERS
&& lowerCount <= NUM_LOWER_LETTERS
&& digitCount <= NUM_DIGITS
&& minLength <= MIN_LENGTH
&& maxLength <= MAX_LENGTH)
System.out.println("Password valid and accepted");
else {
System.out.println("Error");
型
2条答案
按热度按时间jyztefdp1#
这最后一个IF-Else部分需要修改如下:我添加了“!”检查,也关于最小值和最大值,它应该与密码字符串长度进行比较,以检查密码是否在范围内,就像我做的那样,你应该删除最后两个Else-IF
字符串
goucqfw62#
你也应该改变这个
字符串
到
型
当你希望你的lowerCount和minLength高于最小值,只有maxLength和upperCount低于你的硬限制时。我不确定这个条件,因为你没有提到你需要的最小位数“&& digitCount >= NUM_DIGITS”,但值得考虑。