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: }