All pastes #373860 Raw Edit

MikeH

public text v1 · immutable
#373860 ·published 2007-02-27 01:39 UTC
rendered paste body
package BookDigitByDigit;

public class CombinationLock{
  
  private boolean isOpen;
  private int digit1;
  private int digit2;
  private int digit3;
  
  private int thirdToLast;
  private int secondToLast;
  private int last;
  
  /** Constructor: Creates a lock with the given 3 digit combination. 
    * values less than 100 are given leading zeros */
  public CombinationLock (int combination){
    digit3 = combination % 10;
    combination = combination / 10;
    digit2 = combination % 10;
    combination = combination / 10;
    digit1 = combination % 10;
    isOpen = true;
    last = -1;
    secondToLast = -1;
    thirdToLast = -1;
  }
  
  /** Query Method: Returns if the door is unlocked or not */
  public boolean isOpen () {
    return isOpen;
  }
  
  /** Mutator: locks the lock */
  public void close () {
    isOpen = false;
    last = -1;
    secondToLast = -1;
    thirdToLast = -1;
  }
  
  /** Mutator: Enter a digit of the combination and it unlocks
    * the lock if the 3 digits of the combination are entered in
    * the right order*/
  public void enter (int digit) {
    thirdToLast = secondToLast;
    secondToLast = last;
    last = digit;
    if (thirdToLast == digit1 &&
        secondToLast == digit2 &&
        last == digit3)
      isOpen = true;
  }
}