Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查JAVA中是否有2个大写字母、3个小写字母和1个数字_Java_String_Passwords_Uppercase_Lowercase - Fatal编程技术网

如何检查JAVA中是否有2个大写字母、3个小写字母和1个数字

如何检查JAVA中是否有2个大写字母、3个小写字母和1个数字,java,string,passwords,uppercase,lowercase,Java,String,Passwords,Uppercase,Lowercase,请帮助我,我已经被困了一个下午,无法从其他资源中找到/理解答案。我需要接收用户输入的密码,并需要测试密码是否包含: 两个大写字母 三个小写字母 一个数字 这是我的密码: import javax.swing.JOptionPane; public class PracticePassword { public static void main(String[] args) { String originalPw; // TODO Auto-generat

请帮助我,我已经被困了一个下午,无法从其他资源中找到/理解答案。我需要接收用户输入的密码,并需要测试密码是否包含:

两个大写字母 三个小写字母 一个数字 这是我的密码:

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");
            }
        }

    }   
}
如果看起来我不知道我到底在做什么,那是因为我不知道。请帮忙。谢谢各位:


谢谢大家的回复。我应该说得更具体些。我想我应该问的是,是否有任何方法或结构可以在代码中实现,以确保用户输入符合这些规范。我现在看到我的代码非常不完整。我现在复习笔记以改进代码。

这看起来像是一个家庭作业问题,所以我不会直接解决它。但是,以下是您可以采取的一些步骤:

创建一个方法来验证输入的公共静态布尔值isValidString stry

将字符串转换为字符数组。有一种方法

迭代这些字母,并记录有多少大写字母和小写字母以及有多少位数字。使用,以及

如果满足所有要求,则返回true。否则返回false


看起来您几乎没有尝试在密码中查找大写/小写字母和数字。我会逐字符搜索循环字符串,并查找什么是ASCII表,这将有助于为您指出解决此问题的正确方向如果您需要验证是否有例如3个小写字母,你不认为你应该遍历所有的字母,并计算小写字母的数量吗?-关键字:count。谢谢你的回复。我应该说得更具体些。我想我应该问的是,是否有任何方法或结构可以在我的代码中实现,以确保用户输入符合这些规范。请记住,复杂的密码规则通常不会导致更安全的密码,重要的是只有最小长度。人们无法记住大量的强密码,这样的规则可能会干扰良好的密码方案。人们可以很有创意地绕过这些规则,例如使用Password-2017等弱密码。通常情况下,您的密码会变弱,而不是变强。最近,NIST发布了一份声明,反对这些规则,也反对以前的建议。