java判断密码强度

从键盘录入一个字符串作为密码,打印密码强度。

int n1 = 0; // 字母个数

int n2 = 0; // 数字个数

int n3 = 0; // 其他字符的个数

判断密码强度:只有一类字符,则密码弱;有两类字符,密码一般;有三类字符,密码强

可以通过以下代码判断密码的强度:

import java.util.Scanner;

public class PasswordStrength {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入密码:");
        String password = scanner.nextLine();

        int n1 = 0; // 字母个数
        int n2 = 0; // 数字个数
        int n3 = 0; // 其他字符的个数

        // 遍历密码字符串,统计不同类型字符的个数
        for (int i = 0; i < password.length(); i++) {
            char c = password.charAt(i);
            if (Character.isLetter(c)) {
                n1++; // 字母个数加1
            } else if (Character.isDigit(c)) {
                n2++; // 数字个数加1
            } else {
                n3++; // 其他字符个数加1
            }
        }

        // 判断密码强度并打印结果
        if (n1 == 0 && n2 == 0 && n3 == 0) {
            System.out.println("密码为空,密码强度:弱");
        } else if ((n1 > 0 && n2 == 0 && n3 == 0) || (n1 == 0 && n2 > 0 && n3 == 0) || (n1 == 0 && n2 == 0 && n3 > 0)) {
            System.out.println("密码强度:弱");
        } else if ((n1 > 0 && n2 > 0 && n3 == 0) || (n1 > 0 && n2 == 0 && n3 > 0) || (n1 == 0 && n2 > 0 && n3 > 0)) {
            System.out.println("密码强度:一般");
        } else if (n1 > 0 && n2 > 0 && n3 > 0) {
            System.out.println("密码强度:强");
        }
    }
}

以上代码通过统计密码中字母、数字和其他字符的个数,并根据个数的不同情况进行判断密码的强度。如果密码中只包含一类字符,则密码弱;如果包含两类字符,则密码一般;如果包含三类字符,则密码强。根据判断结果,打印相应的密码强度信息。

注意,以上代码仅为示例,未进行输入验证和错误处理,请根据实际需求进行适当的修改和完善。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/731450
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:java接口回调练习:卡车要装载一批货物,货物由电视机、计算机和洗衣机组成,卡车需要计算出整批货物的重量
  • 你还可以看下java参考手册中的 java-集合 - 关于使用和扩展Java集合框架的课程。- 聚合操作 代表你对集合进行迭代,这使你能够编写更简洁和有效的代码,处理存储在集合中的元素。 -平行主义
  • 除此之外, 这篇博客: Java基础总结中的 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 答:是值传递。Java语言的方法调用只支持参数的值传递。

    Java中没有传引用实在是非常的不方便,这一点在Java 8中仍然没有得到改进,正是如此在Java编写的代码中才会出现大量的Wrapper类(将需要通过方法调用修改的引用置于一个Wrapper类中,再将Wrapper对象传入方法),这样的做法只会让代码变得臃肿,尤其是让从C和C++转型为Java程序员的开发者无法容忍。

  • 您还可以看一下 汤小洋老师的手把手搭建Java酒店管理系统【附源码】(毕设)课程中的 酒店管理系统简介小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以为您提供一个Java代码来判断密码强度。代码如下:

    public static int checkPasswordStrength(String password) {
        int strength = 0;
        Pattern pDigit = Pattern.compile("[0-9]");
        Pattern pLetter = Pattern.compile("[a-zA-Z]");
        Pattern pSymbol = Pattern.compile("[^a-zA-Z0-9]");
    
        Matcher mDigit = pDigit.matcher(password);
        Matcher mLetter = pLetter.matcher(password);
        Matcher mSymbol = pSymbol.matcher(password);
    
        if (mDigit.find()) {
            strength++;
        }
        if (mLetter.find()) {
            strength++;
        }
        if (mSymbol.find()) {
            strength++;
        }
    
        return strength;
    }
    

    这段代码使用了正则表达式来判断密码中是否存在数字、字母和符号,如果存在相应的类型,就增加密码强度的值。函数返回的值如下:

    • 0:密码弱,只包含一类字符
    • 1:密码一般,包含两类字符
    • 2:密码强,包含三类字符

    您只需要传入一个密码字符串,就可以得到对应的密码强度值。请确保引入了java.util.regex包,以使用正则表达式。