java - java中如何限制用户输入4位pin

标签 java

我想从用户那里获取 PIN 码的输入,并且我想限制用户只能获取 4 位 PIN 码。我尝试过[但是当我输入 0001 时它不起作用,它再次要求输入 4 位数字密码,然后请解决它

void pin1()
{
    //int pin;
    for(int i=1;i<=1000;i++)
    {
        try
        {
                pin=obj.nextInt();
                if(pin<=9999 && pin>=1000)
                {
                }
                else
                {
                    System.out.println("Pin must be four digit");
                    pin1();
                }

            break;
        }
        catch(InputMismatchException e)
        {
            obj.next();
            System.out.println("Error use numbers not alphabets or characters");
        }
    }
}

最佳答案

您选择的图钉类型错误。作为 int 值,00011 是相同的值,但后者是无效引脚,而前者是有效引脚。

您应该使用String来存储pin。这意味着您应该调用 nextLine 而不是 nextInt:

String pin = obj.nextLine();

要检查此 pin 是否包含 4 位数字,我们可以使用正则表达式 \d{4}

Matcher m = Pattern.compile("\\d{4}").matcher(pin);
if (m.matches()) {
    System.out.println("You have entered a 4-digit pin");
} else {
    System.out.println("You have not entered a 4-digit pin");
}

或者,您可以使用 for 循环进行检查:

if (pin.length() != 4) {
    System.out.println("You have not entered a 4-digit pin");
} else {
    boolean allDigits = true;
    for (int i = 0 ; i < 4 ; i++) {
        if (!Character.isDigit(pin.charAt(i))) {
            allDigits = false;
            break;
        }
    }
    if (allDigits) {
        // pin is valid
    } else {
        System.out.println("Error use numbers not alphabets or characters"); 
    }
}

关于java - java中如何限制用户输入4位pin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53350028/

相关文章:

Java套接字编程头

java - 将具有响应式设计的网站转换为 Android 应用程序

java - 为什么我的 RenderingHints 键在应用于 Graphics2D 对象时不被遵守?

java - Java 中的素数生成线程打印两次

Java如何读取stdin?

java - 如何使用 cucumber-java 在 intellij 13.1.4 中为 android 项目设置和运行 cucumber bdd 测试

java - 简单的java循环写入数据库会导致内存不足异常

java - 使用 Mockitos 进行单元测试未按预期工作

Java Mockito 何时返回对象创建

java - 如何从 POST 请求中检索 cookie?