检查字符串中大写字母的Java方法总是返回false

问题描述 投票:0回答:1

我正在尝试用 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

java methods capitalization logic-error
1个回答
0
投票

问题是您只返回最后一个字符的状态。像这样尝试一下。

public static boolean checkString(String str) {

    for(int i=0;i < str.length();i++) {
        if (Character.isUpperCase(ch)) {
            return true; 
        }
    }
    return false;   
}

您可能想将此方法重命名为

containsUpperCase()

© www.soinside.com 2019 - 2024. All rights reserved.