当前位置: 首页 > 知识库问答 >
问题:

以编写密码、PIN 和 PUK 的程序

狄德泽
2023-03-14

我正在尝试创建一个程序,该程序将提示用户输入正确的密码。第三次密码输入不正确时,程序应向用户询问PIN码,如果用户仍然未能正确输入PUK进行3次尝试,则程序现在应打印SIM卡阻止。

我想我必须使用循环,但我不知道如何使用。我只是一个新手。

import java.util.Scanner;
import java.io.*;
    public class PinPUK {
    public static void main(String[] a) {
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Enter Pin Code: ");
    int choice  = keyboard.nextInt();
    if (choice == 123) {
        System.out.println("Welcome!");    
        }
    else {
        System.out.println("Password is incorrect! Try again!"); // This is the 1st time the wrong password has been entered.
    }                                                           // 2 more and the program should ask for the PIN 3 times if incorrectly entered, and program should ask the PUK 3 times if it is incorrect, the program should now print SIM BLOCKED.
    }
}

共有3个答案

窦志新
2023-03-14
public class PinPUK {
    public static void main(String[] a) {
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Enter Pin Code: ");
    int tries = 0;
    boolean correctPin = false;
    while(!correctPin) {
        //It is better to scan the next line and parse the integer
        int choice  = Integer.parseInt(keyboard.nextLine());
        if (choice == 123) {
           System.out.println("Welcome!"); 
           correctPin = true;   
        }
        else if (tries < 3{
            System.out.println("Password is incorrect! Try again!"); 
       }    
       else if (tries >= 3)
          System.out.println("SIM blocked");
       }
   }
}
孟成化
2023-03-14

它可以通过使用以下片段来完成:

int count = 0;
while(count<3) {
    if (choice == 123) {
        System.out.println("Welcome!"); 
        break;   //break from the loop
    }
    else {
        System.out.println("Password is incorrect! Try again!");
    }
    count++;
}

if(count == 3) {
     System.out.println("SIM BLOCKED");
}
后星河
2023-03-14

在主要尝试这个:

int attemps = 0;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter Pin Code: ");
int PIN = 0;
int PUK = 0;
int CORRECT_PIN = 123;
int CORRECT_PUK = 1234;
while(PIN != CORRECT_PIN && attemps < 3)
        {
            PIN  = keyboard.nextInt();
            attemps++;
            if (PIN != CORRECT_PIN && attemps < 3) { 
               System.out.println("PIN is incorrect! Try again!" ); // This is the 1st time the wrong password has been entered.
            }
        }
        if (PIN == CORRECT_PIN && attemps <= 3) {  
            System.out.println("Welcome!");  
        }
         else {
           System.out.println("PIN is incorrect! Try again with PUK");
           attemps = 0;
           while(PUK != CORRECT_PUK && attemps < 3)
           {
            PUK  = keyboard.nextInt();
            attemps++;
            if (PUK != CORRECT_PUK && attemps < 3) { 
               System.out.println("PUK is incorrect! Try again!"); // This is the 1st time the wrong password has been entered.
            }
           }
        if (PUK == CORRECT_PUK && attemps <= 3) {  
            System.out.println("Welcome!");  
        }
        else
        {
           System.out.println("PUK is incorrect! SIM Blocked! See you!");
        }
        }

输出1:

Enter Pin Code: 33 
PIN is incorrect! Try again!
3333
PIN is incorrect! Try again!
33333
PIN is incorrect! Try again with PUK
3333
PUK is incorrect! Try again!
333
PUK is incorrect! Try again!
333
PUK is incorrect! SIM Blocked! See you!

输出2:

Enter Pin Code: 324234
PIN is incorrect! Try again!
123
Welcome!

输出3:

Enter Pin Code: 4354
PIN is incorrect! Try again!
345
PIN is incorrect! Try again!
3455
PIN is incorrect! Try again with PUK
1234
Welcome!

如果要将 PIN 与 0 进行比较,请使用以下命令:

String PIN = null;
String CORRECT_PIN = "0123";
do{
        PIN  = keyboard.next();
        attemps++;
        if (!PIN.equals(CORRECT_PIN) && attemps < 3) 
            { 
               System.out.println("PIN is incorrect! Try again!" );
            }
     }while(!PIN.equals(CORRECT_PIN) && attemps < 3);

然后在 if 语句中使用以下内容:

PIN.equals(CORRECT_PIN)

代替

PIN == CORRECT_PIN

完整代码在这里:

int attemps = 0;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter Pin Code: ");
String PUK = null;
String PIN = null;
String CORRECT_PIN = "0123";
String CORRECT_PUK = "01234";
do{
        PIN  = keyboard.next();
        attemps++;
        if (!PIN.equals(CORRECT_PIN) && attemps < 3) 
            { 
               System.out.println("PIN is incorrect! Try again!" );
            }
     }while(!PIN.equals(CORRECT_PIN) && attemps < 3);
            if (PIN.equals(CORRECT_PIN) && attemps <= 3) {  
                System.out.println("Welcome!");  
            }
             else {
               System.out.println("PIN is incorrect! Try again with PUK");
               attemps = 0;
            do{
                PUK  = keyboard.next();
                attemps++;
                if (!PUK.equals(CORRECT_PUK) && attemps < 3) 
                    { 
                       System.out.println("PIN is incorrect! Try again!" );
                    }
             }while(!PUK.equals(CORRECT_PUK) && attemps < 3);
            if (PUK.equals(CORRECT_PUK) && attemps <= 3) {  
                System.out.println("Welcome!");  
            }
            else
            {
               System.out.println("PUK is incorrect! SIM Blocked! See you!");
            }
            }
 类似资料:
  • 问题内容: 我已实现以下解锁应用程序的代码(此代码仅适用于系统应用程序,因此我已将应用程序作为系统应用程序完成) 它对我来说很好用,但是现在我需要以编程方式实现设置或重置SIM PIN,让我知道是否可行。如果可能的话,我该如何实施呢? 问题答案:

  • 我在弄清楚如何正确读取pem文件的私钥方面遇到了困难。我已经在stackoverflow上浏览了不同的主题,但是我找不到解决方案。我想实现的是从类路径中读取pkcs#8编码文件中的加密私钥,并将其作为内存密钥存储库中的密钥条目加载。下面是我试图解析的一个示例私钥,密码是。它纯粹是为了共享而创建的,所以它不是生产机器上使用的私钥。 我使用以下命令从p12文件创建了它: 有效示例(一次性)密钥对 我知

  • 本文向大家介绍shiro编码和加密代码详解,包括了shiro编码和加密代码详解的使用技巧和注意事项,需要的朋友参考一下 涉及到密码存储问题上,应该加密/生成密码摘要存储,而不是存储明文密码。比如之前的600w csdn账号泄露对用户可能造成很大损失,因此应加密/生成不可逆的摘要方式存储。 编码/解码  Shiro提供了base64和16进制字符串编码/解码的API支持,方便一些编码解码操作。Shi

  • 问题内容: 我想知道是否已经有一个库可以以编程方式编写Java类或方法? 我正在寻找能够将新的源代码写入现有文件或扩展已经存在的文件的库。 问题答案: 查看Eclipse JDT。 Eclipse Java开发工具(JDT)提供用于访问和操作Java源代码的API。它允许访问工作空间中的现有项目,创建新项目以及修改和读取现有项目。 更具体地说,您可以使用Java Model API创建新的Java

  • 我的php登录文件有问题。我通过检查电子邮件向数据库询问密码。当我获得这个密码时,我会用用户填写的密码进行检查。 在中,结果总是返回0,但结果应该返回1(密码匹配)。 登录代码: 注册码: Passwd是数据库中的varchar(50)列。

  • 摘要:在PKCS11和OpenSC上使用JCA时,在提取证书时会请求PIN。 我有一个应用程序需要使用智能卡签名。智能卡由OpenSC支持,所以我使用Java内置的pkcs11包装提供程序来使用它。出于功能原因,我需要在不需要PIN的情况下获得卡中的证书。如果用户最终签名,那么当然需要PIN。 我明白了,我可以在命令行中完成,而无需提供PIN: 到目前为止,一切顺利。 Oracle的文档清楚地说,