import javax.swing.*;
/** 
 * GuessDivisors plays a number-guessing game
 */
public class BracketGuessDivisors {
  
  /**
   * Number to be guessed.
   */
  private int myNumber;
  
  /**
   * construct a GuessDivisors that allows the user to guess
   * myNumber.
   * @param myNumber Number to be guessed.
   */
  public BracketGuessDivisors(int myNumber) {
    this.myNumber= myNumber;
  }
  
  /**
   * Play a session of the number-guessing game.
   */
  public void play() {
    int smallGuesses= 0, bigGuesses= 0;
    int lowerBracket= 0, upperBracket= 0;
    String lowerString= "", upperString= "";
    int currentGuess= 
      Integer.parseInt(JOptionPane.showInputDialog("Guess a positive integer."));
    // Correct number was not guessed before currentGuess
    while (currentGuess != myNumber) {
      if (currentGuess > myNumber) {
        bigGuesses++;
        if (currentGuess < upperBracket || bigGuesses == 1) {
          upperBracket= currentGuess;
        }
        upperString= "" + upperBracket;
        currentGuess=
          Integer.parseInt(JOptionPane.
                             showInputDialog("My number divides your guess, " +
                                             "leaving a remainder of " +
                                             currentGuess % myNumber + ".\n"
                                               + "The number is in the range " +
                                             lowerString + ".." + 
                                             upperString + " (exclusive),"));
      }
      else { // currentGuess must be smaller
        smallGuesses++;
        if (lowerBracket < currentGuess || smallGuesses == 1) {
          lowerBracket= currentGuess;
        }
        lowerString= "" + lowerBracket;
        currentGuess=
          Integer.parseInt(JOptionPane.
                             showInputDialog("Your guess divides my number, " +
                                             "leaving a remainder of " +
                                             myNumber % currentGuess + ".\n" +
                                             "The number is in the range " +
                                             lowerString + ".." +
                                             upperString + " (exclusive)."));
      }
    }
    JOptionPane.showMessageDialog(null, "You got it!\n" +
                                  "You guessed " + smallGuesses + 
                                  " numbers smaller than my number\n" +
                                  "and " + bigGuesses +
                                  " numbers larger than my number.");
  }
  
  
}
