java - 在Java中检查字符串中的字母大小写(大写/小写)

标签 java

我遇到的问题是我无法让我的密码验证程序检查一个字符串以确保其中 1 个字符是大写的,一个是小写的,它将检查整个字符串其中一个并根据它正在检查的语句打印错误消息。

我已经查看了这个网站和互联网以寻找答案,但我找不到答案。这是家庭作业。

下面是我当前的代码。

import java.util.Scanner;

public class password
{
    public static void main(String[] args)
    {
        Scanner stdIn = new Scanner(System.in);
        String password;
        String cont = "y";
        char ch;
        boolean upper = false;
        boolean lower = false;

        System.out.println("Setting up your password is easy. To view requirements enter Help.");
        System.out.print("Enter password or help: ");
        password = stdIn.next();
        ch = password.charAt(0);

        while (cont.equalsIgnoreCase("y"))
        {
            while (password.isEmpty())
            {
                System.out.print("Enter password or help: ");
                password = stdIn.next();       
            }

            if (password.equalsIgnoreCase("help"))
            {
                 System.out.println("Password must meet these requirements." +
                     "\nMust contain 8 characters.\nMust contain 1 lower case letter." +
                     "\nMust contain 1 upper case letter.\nMust contain 1 numeric digit." +
                     "\nMust contain 1 special character !@#$%^&*\nDoes not contain the word AND or NOT.");

                password = "";
            }
            else if (password.length() < 8)
            {
                System.out.println("Invalid password - Must contain 8 charaters.");
                password = "";
            }
            else if (!(Character.isLowerCase(ch)))
            {
                for (int i=1; i<password.length(); i++)
                {
                    ch = password.charAt(i);

                    if (!Character.isLowerCase(ch))
                    {  
                        System.out.println("Invalid password - Must have a Lower Case character.");
                        password = "";
                    }
                }
            }
            else if (!(Character.isUpperCase(ch)))
            {
                for (int i=0; i<password.length(); i++)
                {       
                    ch = password.charAt(i);

                    if (!Character.isUpperCase(ch))
                    {
                        System.out.println("Invalid password - Must have an Upper Case character.");
                        password = "";
                    }
                }
            }
            else
            {
                System.out.println("Your password is " + password);

                System.out.print("Would you like to change your password? Y/N: ");
                cont = stdIn.next();
                password = "";
            }

            while (!cont.equalsIgnoreCase("y") && !cont.equalsIgnoreCase("n"))
            {
                System.out.print("Invalid Answer. Please enter Y or N: ");
                cont = stdIn.next();
            }
        }
    }
}

最佳答案

要确定一个字符串是否包含大写和小写字符,可以使用以下方法:

boolean hasUppercase = !password.equals(password.toLowerCase());
boolean hasLowercase = !password.equals(password.toUpperCase());

这允许您检查:

if(!hasUppercase)System.out.println("Must have an uppercase Character");
if(!hasLowercase)System.out.println("Must have a lowercase Character");

本质上,这是通过检查字符串是否等于其完全小写或大写等效来实现的。如果不是这样,则必须至少有一个大写或小写字符。

至于你的其他条件,可以类似的方式满足:

boolean isAtLeast8   = password.length() >= 8;//Checks for at least 8 characters
boolean hasSpecial   = !password.matches("[A-Za-z0-9 ]*");//Checks at least one char is not alpha numeric
boolean noConditions = !(password.contains("AND") || password.contains("NOT"));//Check that it doesn't contain AND or NOT

上面有合适的错误信息。

关于java - 在Java中检查字符串中的字母大小写(大写/小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16127923/

相关文章:

java - 套接字异常 : Connection reset - Client Jersey 2. 0 Java 7

java - 安全地连接到 UI 线程 Android

java - import com.google 无法解决?

java - instanceof什么时候返回FALSE?

java - 如何解析 URI 中包含哈希符号的字符串

java - 列表正在用最新值替换所有旧值

java - 同步 TreeSet 类型转换?

java - 一种反转java String.split()效果的方法?

java - 自定义 sonarqube 插件 - 代理服务

java - 克隆方法 Java