// File: KeyboardReader.java
/* A class whose objects allow the interactive reading of
   data from the user's keyboard.

   Errol Chopping
   [echopping@csu.edu.au]
   Version 1.0, September 1999

   Assumes Java 1.1.x
*/

import java.io.*;
import java.util.*;

class KeyboardReader
{
  private BufferedReader br;
  private Script sc;

  public
  KeyboardReader()
  {
    br = new BufferedReader( new InputStreamReader( System.in ) );
    sc = null;
  }

  public
  KeyboardReader( Script s )
  {
    br = new BufferedReader( new InputStreamReader( System.in ) );
    sc = s;
  }

  public
  String getString()
  {
    String temp;
    try
    {
      temp = br.readLine();
    }
    catch( IOException ioe )
    {
       System.err.println( "KeyboardReader IOException in 'getString()'" );
       return null;
    }
    if( sc != null )
      sc.capture( temp );
    return temp;
  }

  public
  String getLine()   // for compatibility with older version
  {
    return getString();
  }


  public
  char getChar()
  {
    String s = getString();
    if( s.length() == 0 )
    {
      System.err.println( "\nKeyboardReader warning: zero length data entry in 'getChar()'" );
      return '\0';
    }
    
    return s.charAt(0);
  }

  public
  int getInt()
  {
    String s = getString();
    if( s.length() == 0 )
      System.err.println( "\nKeyboardReader warning: zero length data entry in 'getInt()'" );
    return Integer.parseInt( s );
  }

  public
  double getDouble()
  {
    String s = getString();
    if( s.length() == 0 )
      System.err.println( "\nKeyboardReader warning: zero length data entry in 'getDouble()'" );
    
    return new Double( s ).doubleValue();
  }

  public
  String getWord()
  {
    String s = getString();
    StringTokenizer st = new StringTokenizer( s );
    if( st.hasMoreTokens() )
      return st.nextToken();
    return null;
  }


  public
  String toString()
  {
    String rtn = "\nKeyboardReader. A utility class for reading from the standard input.\n"
               + "by Errol Chopping\n"
               + "[echopping@csu.edu.au]\n"
               + "Version 1.0, September 1999.\n"
               + "Methods available:\n"
               + "  String getString()\n"
               + "  int getInt()\n"
               + "  double getDouble()\n"
               + "  char getChar()\n"
               + "  String getWord()\n";
    return rtn;
  }

}




