gpt4 book ai didi

java - 密码 validator 问题

转载 作者:行者123 更新时间:2023-12-01 17:22:38 25 4
gpt4 key购买 nike

编辑:这可能是PasswordVerifier.Java中非常糟糕的代码

我正在做一个密码 validator ,检查输入的密码是否至少有 6 个字符长,包含大写字母、小写字母和数字。

我认为我的逻辑有点正确,但由于某种原因我的程序不会进入下一个提示。它询问我的密码,然后挂断,并且不告诉我密码是否有效。我认为我的 for 循环是正确的,所以我不知道我的问题是什么。

密码 validator .Java

import java.util.*;

public class PasswordVerifier{

//field
private static int MIN_PASSWORD_LENGTH = 6;

//methods
public static boolean isValid(String str){

boolean valid = false;

PasswordVerifier pass = new PasswordVerifier();

if(pass.hasUpperCase(str)|| pass.hasLowerCase(str) || pass.hasDigit(str)){
valid = true;
}

if (str.length() < 6){
valid = false;
}

return valid;

}

//UpperCase Boolean check
private boolean hasUpperCase(String str){

boolean valid = false;

int i = 0;

while (i < str.length()){
if (Character.isUpperCase(str.charAt(i)))
valid = true;
}
i++;

return valid;
}

//Lowercase Boolean Check
private boolean hasLowerCase(String str){

boolean valid = false;

int i = 0;

while (i < str.length()){
if (Character.isLowerCase(str.charAt(i)))
valid = true;
}
i++;

return valid;
}

//Number boolean check
private boolean hasDigit(String str){

boolean valid = false;

int i = 0;

while (i < str.length()){
if ((Character.isDigit(str.charAt(i))))
valid = true;
}
i++;

return valid;

}

}

密码演示.Java

import javax.swing.JOptionPane;

public class PasswordDemo{

public static void main(String[] args){

String input; //To hold the user's input

input = JOptionPane.showInputDialog("Enter a Password");

if (PasswordVerifier.isValid(input)){
JOptionPane.showMessageDialog(null, "Valid Password");
}
else{
JOptionPane.showMessageDialog(null, "invalid Password, try again.");
}

}
}

最佳答案

您的 while 循环永远不会增加 i,因为您将 i++ 放置在循环末尾之后。结果是无限循环和您所描述的“悬挂”。

例如替换

while (i < str.length()){
if (Character.isUpperCase(str.charAt(i)))
{
valid = true;
// Added break because we found an uppercase letter already.
break;
}
i++; // Inside the while loop.
}

您需要对每个 while 循环进行类似的更改。

此外,如果您想强制执行所有 3 个规定,请不要使用逻辑或运算符 ||,而使用逻辑与、&&:

if (pass.hasUpperCase(str) && pass.hasLowerCase(str) && pass.hasDigit(str)) {
valid = true;
}

这将确保密码有一个大写字母并且有一个小写字母并且有一个数字。

关于java - 密码 validator 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17436927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com