开发者

Allowing a maximum number of times for system to accept incorrect PIN

I made a java login screen for a console application, but I need it to allow the user to input ther wrong PIN only 3 times. After the user has entered the PIN more than 3 times, the system should exit.

However, the lo开发者_如何学Pythonop which I used for the else part of the if condition does not seem to be making any changes to the program. (program wont execute the else part even once). Does anybody know what I am doing wrong?

if (userPIN.equals(a[0]))
{
  System.out.println("You have login!");
  valid=true;                       
  String b=a[2];
  Login.c=Double.parseDouble(b);
  System.out.println(c);
  obj.balance = Login.c;
  obj.MainMenu();
  System.exit(0);
}
else if(userPIN != a[0])
{
  int count=0;
  for(int i=0;i<count;i++)
  {
    System.out.println("Invalid PIN!");
    check();    
  }
}


    int count=0;
    for(int i=0;i<count;i++)

The for loop's condition is initially false, hence it will never execute its body.


You have many problems in your code :

in the first if your using :

userPIN.equals(a[0])

but in the else you're using :

userPIN != a[0]

Your for loop cannot run correctly :

int count=0;
for(int i=0;i<count;i++)

Here is the correct implementation using Object-Orientation :

import java.util.Scanner;

public class PinChecker {

   // Immutable Class
   private static final class Pin {

      private String _pin;

      Pin(String pin) {
         this._pin = pin;
      }

      public String toString() {
         return _pin;
      }

      public boolean equals(Pin pin) {
         if(pin.toString().equals(_pin)) {
            return(true);
         } else {
            return(false);
         }
      }

   }

   public static final int NB_OF_TRIES = 3;

   public static void main(String[] args) {

      System.out.println("Enter your PIN :");
      Pin userPin = new Pin("FOO");

      Scanner console = new Scanner(System.in);

      boolean pinMatch = false;
      int i = 0;

      while(!pinMatch && i < NB_OF_TRIES) {

         Pin keyedPin = new Pin(console.nextLine());
         i++;

         if(userPin.equals(keyedPin)) {
            pinMatch = true;
         } else {
            System.out.println("Invalid PIN!");
         }
      }

      if(pinMatch) {
         System.out.println("OK, nb of tries :" + i);
      } else {
         System.out.println("KO, nb of tries :" + i);
      }

   }

}

You can store the keyedPin object if you need to.


in the else part try !(userPIN.equals(a[0]))

Your else part is not checking the contents.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜