    01: import java.util.Scanner;
    02:
    03: /**
    04:    A telephone that takes simulated keystrokes and voice input
    05:    from the user and simulates spoken text.
    06: */
    07: public class Telephone
    08: {
    09:    /**
    10:       Construct phone object.
    11:       @param aScanner that reads text from a character-input stream
    12:    */
    13:    public Telephone(Scanner aScanner)
    14:    {
    15:       scanner = aScanner;
    16:    }
    17:
    18:    /**
    19:       Speak a message to System.out.
    20:       @param output the text that will be "spoken"
    21:    */
    22:    public void speak(String output)
    23:    {
    24:       System.out.println(output);
    25:    }
    26:
    27:    /**
    28:       Loops reading user input and passes the input to the
    29:       Connection object's methods dial, record or hangup.
    30:       @param c the connection that connects this phone to the
    31:       voice mail system
    32:    */
    33:    public void run(Connection c)
    34:    {
    35:       boolean more = true;
    36:       while (more)
    37:       {
    38:          String input = scanner.nextLine();
    39:          if (input == null) return;
    40:          if (input.equalsIgnoreCase("H"))
    41:             c.hangup();
    42:          else if (input.equalsIgnoreCase("Q"))
    43:             more = false;
    44:          else if (input.length() == 1
    45:             && "1234567890#".indexOf(input) >= 0)
    46:             c.dial(input);
    47:          else
    48:             c.record(input);
    49:       }
    50:    }
    51:
    52:    private Scanner scanner;
    53: }