【发布时间】:2019-03-18 04:00:47
【问题描述】:
请帮助我已经被困了一个下午的大部分时间,并且无法真正从其他资源中找到/理解答案。我需要接收用户输入的密码,需要测试密码是否包含:
- 两个大写字母
- 三个小写字母
- 一个号码
这是我的代码:
import javax.swing.JOptionPane;
public class PracticePassword {
public static void main(String[] args) {
String originalPw;
// TODO Auto-generated method stub
String newPw;
int pwLength;
int i;
char c;
newPw = JOptionPane.showInputDialog(null, "Please enter a password" +
" that contains the following:" + "\n"
+ "**TWO upper case letters" + "\n" + "**THREE lower case letters" + "\n"
+ "**ONE number");
originalPw = newPw;
pwLength = newPw.length();
for (i = 0; i <= pwLength; i++) {
boolean hasUpperCase = !originalPw.equals(originalPw.toUpperCase());
boolean hasLowerCase = !originalPw.equals(originalPw.toUpperCase());
if(!hasUpperCase){
System.out.println("You have three upper case letters, good job.");
}
else {
System.out.println("You must have three upper case letters");
}
}
}
}
如果看起来我不知道我最后在做什么,那是因为我不知道。请帮忙。谢谢:)
感谢大家的回复。我应该更具体。我想我应该问我是否可以在我的代码中实现任何方法或结构,以确保用户输入符合这些规范。我现在看到我的代码非常不完整。我现在正在复习笔记以改进我的代码。
【问题讨论】:
-
您似乎几乎没有尝试在密码中查找大写/小写字母和数字。我会搜索“逐字符循环字符串”并查找 ASCII 表是什么,这应该有助于为您指明解决此问题的正确方向
-
如果您需要验证是否有例如3个小写字母,你不认为你应该遍历所有字母并计算小写字母的数量吗? --- 关键字:COUNT.
-
感谢大家的回复。我应该更具体。我想我应该问我是否可以在我的代码中实现任何方法或结构,以确保用户输入符合这些规范。
-
请记住,复杂的密码规则通常不会产生更安全的密码,重要的只是最小长度。人们无法记住大量的强密码,这样的规则会干扰好的密码方案。人们可以非常有创意地绕过这些规则,例如通过使用“Password-2017”等弱密码。通常,您最终会使用较弱的密码而不是较强的密码。最近 NIST 发布了official paper,建议反对此类规则,并反对其以前的建议。
标签: java string passwords uppercase lowercase