java - 在java中检查密码。它必须包含至少 10 个字母(数字或数字)和至少 2 个数字
问题描述
我的代码有这个问题。它会读取密码是否至少有 10 个字符,但关于数字,它不起作用。它总是告诉我密码必须至少包含 2 位数字。
public class EsercizioPassword {
static int passLength = 10;
static String pass = "hello1221";
public static void main(String[] args) {
checkPass();
}
public static void checkPass() {
int digit=0;
for (int i = 0; i < pass.length(); i++) {
if(Character.isDigit(pass.charAt(i))) {
digit++;
if(digit<2) {
System.out.println("At least 2 digits");
return;
}
}
if (!Character.isLetterOrDigit(pass.charAt(i))) {
System.out.println("Password must contains only Lettere or Digit ");
return;
}else if (pass.length() < 10) {
System.out.println("Password must contains at least 10 characters");
return;
}
}
System.out.println("Correct password");
}
}
解决方案
您一增加就检查数字计数。digit>=2
您应该在 for 循环退出后验证这一点。
您对长度验证执行相同的操作。也将其拉出循环。
推荐阅读
- python - Heroku Procfile 声明类型->(无)
- flutter - 在 Flutter 中验证 Hive secureBox 的加密
- excel - 我需要在 excel 中为 5 行创建一个随机数据集(避免重复)
- go - 什么时候需要 ssh.KeyboardInteractive?
- python - 在python中缩进函数调用的正确方法
- boost - 未随 Homebrew 安装的 Boost 库:无效选项:--c++11
- node.js - 我试图根据以下 Dockerfile 构建这个 docker 映像,直到发生这种情况
- typescript - 从属性和选项的 JS 对象动态创建接口
- php - 如何在 Woocommerce 4.7 中为每个类别页面显示不同的顶部横幅?
- select - 订阅两次相同价值的期权