从键盘录入一个字符串作为密码,打印密码强度。
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("密码强度:强");
}
}
}
以上代码通过统计密码中字母、数字和其他字符的个数,并根据个数的不同情况进行判断密码的强度。如果密码中只包含一类字符,则密码弱;如果包含两类字符,则密码一般;如果包含三类字符,则密码强。根据判断结果,打印相应的密码强度信息。
注意,以上代码仅为示例,未进行输入验证和错误处理,请根据实际需求进行适当的修改和完善。
答:是值传递。Java语言的方法调用只支持参数的值传递。
Java中没有传引用实在是非常的不方便,这一点在Java 8中仍然没有得到改进,正是如此在Java编写的代码中才会出现大量的Wrapper类(将需要通过方法调用修改的引用置于一个Wrapper类中,再将Wrapper对象传入方法),这样的做法只会让代码变得臃肿,尤其是让从C和C++转型为Java程序员的开发者无法容忍。
我可以为您提供一个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;
}
这段代码使用了正则表达式来判断密码中是否存在数字、字母和符号,如果存在相应的类型,就增加密码强度的值。函数返回的值如下:
您只需要传入一个密码字符串,就可以得到对应的密码强度值。请确保引入了java.util.regex包,以使用正则表达式。