我正在尝试用 Java 制作一个简单的密码检查程序,在允许用户继续之前检查一系列有关用户密码的信息。
它检查的内容之一是确保密码中至少有一个大写字母。这是代码,首先是使用的方法:
public static boolean checkString(String str) {
char ch;
boolean capitalFlag = false;
for(int i=0;i < str.length();i++) {
ch = str.charAt(i);
capitalFlag = Character.isUpperCase(ch);
}
return capitalFlag;
}
然后,检查这一点的 else if 语句:
else if (!checkString(enterPasswordAgain) || !checkString(enterPasswordAgain)){
btnSubmit.setForeground(Color.RED);
btnSubmit.setText("Make sure your password has at least one capital letter.");
System.out.println("false");
}
else {
btnSubmit.setForeground(Color.GREEN);
btnSubmit.setText("Excellent password!");
System.out.println("true");
}
由于某种原因,每次都会返回 false,尽管事实上这是最后检查的事情并且不应该引起任何问题。我对 Java 很陌生,有人可以解释为什么这不起作用吗?谢谢!
Tldr:尽管应该返回 CapitalFlag 的值,但每次都返回 false
问题是您只返回最后一个字符的状态。像这样尝试一下。
public static boolean checkString(String str) {
for(int i=0;i < str.length();i++) {
if (Character.isUpperCase(ch)) {
return true;
}
}
return false;
}
您可能想将此方法重命名为
containsUpperCase()