Максимально допустимое количество раз система принимает неправильный PIN-код - PullRequest
0 голосов
/ 24 сентября 2010

Я сделал экран входа в Java для консольного приложения, но мне нужно, чтобы пользователь мог вводить неправильный PIN-код только 3 раза. После того, как пользователь ввел PIN-код более 3 раз, система должна выйти.

Однако цикл, который я использовал для остальной части условия if, похоже, не вносит никаких изменений в программу. (программа не выполнит остальную часть хотя бы один раз). Кто-нибудь знает, что я делаю не так?

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();    
  }
}

Ответы [ 3 ]

3 голосов
/ 24 сентября 2010
    int count=0;
    for(int i=0;i<count;i++)

Условие цикла for изначально ложно, следовательно, оно никогда не выполнит свое тело.

2 голосов
/ 24 сентября 2010

У вас много проблем в вашем коде:

в первом if вашем использовании:

userPIN.equals(a[0])

, но в else вы используете:

userPIN != a[0]

Ваш цикл for не может работать правильно:

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

Вот правильная реализация, использующая объектную ориентацию:

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);
      }

   }

}

Вы можете сохранить объект keyedPinесли вам нужно.

1 голос
/ 24 сентября 2010

в остальной части попробуйте !(userPIN.equals(a[0]))

Ваша другая часть не проверяет содержимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...