优化这段java代码:public static String getRandomPassword(int len) { for (String result = null; len >= 8; result = makeRandomPassword(len)) { result = makeRandomPassword(len); System.out.println(result); if (result.matches(".*[a-z]{1,}.*") && result.matches(".*[A-Z]{1,}.*") && result.matches(".*\\d{1,}.*") && result.matches(".*[~!@#$%^&*\\.?]{1,}.*")) { return result; } } return "长度不得少于6位!"; }
时间: 2023-06-05 14:07:43 浏览: 144
Java中byte[]、String、Hex字符串等转换的方法
5星 · 资源好评率100%
优化代码如下:
public static String getRandomPassword(int len) {
String result = null;
while (len >= 8) {
result = makeRandomPassword(len);
System.out.println(result);
if (result.matches(".*[a-z]{1,}.*")
&& result.matches(".*[A-Z]{1,}.*")
&& result.matches(".*\\d{1,}.*")
&& result.matches(".*[@#$%^&+=]{1,}.*")) {
break;
}
}
return result;
}
优化细节:
1. 将 for 循环改为 while 循环,以避免重复生成密码;
2. 将 makeRandomPassword 方法的执行放在 while 的语句块内;
3. 将正则表达式中的判断条件修改为包含大小写字母、数字和特殊字符;
4. 添加一个 break 语句,在条件满足时跳出循环。
阅读全文