FileDocCategorySizeDatePackage
Keyboard.javaAPI DocExample10564Wed Apr 25 17:14:42 BST 2001None

Keyboard.java

   package cs1;

//********************************************************************
//  Keyboard.java       Author: Lewis and Loftus
//
//  Facilitates keyboard input by abstracting details about input
//  parsing, conversions, and exception handling.
//********************************************************************

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

    public class Keyboard 
   {
   //*************  Error Handling Section  **************************
   
      private static boolean printErrors = true;
      private static int errorCount = 0;
   
   //-----------------------------------------------------------------
   //  Returns the current error count.
   //-----------------------------------------------------------------
       public static int getErrorCount()
      {
         return errorCount;
      }
   
   //-----------------------------------------------------------------
   //  Resets the current error count to zero.
   //-----------------------------------------------------------------
       public static void resetErrorCount (int count)
      {
         errorCount = 0;
      }
   
   //-----------------------------------------------------------------
   //  Returns a boolean indicating whether input errors are
   //  currently printed to standard output.
   //-----------------------------------------------------------------
       public static boolean getPrintErrors()
      {
         return printErrors;
      }
   
   //-----------------------------------------------------------------
   //  Sets a boolean indicating whether input errors are to be
   //  printed to standard output.
   //-----------------------------------------------------------------
       public static void setPrintErrors (boolean flag)
      {
         printErrors = flag;
      }
   
   //-----------------------------------------------------------------
   //  Increments the error count and prints the error message if
   //  appropriate.
   //-----------------------------------------------------------------
       private static void error (String str)
      {
         errorCount++;
         if (printErrors) 
            System.out.println (str);
      }
   
   //*************  Tokenized Input Stream Section  ******************
   
      private static String current_token = null;
      private static StringTokenizer reader;
   
      private static BufferedReader in = new BufferedReader 
         (new InputStreamReader(System.in));
   
   
   //-----------------------------------------------------------------
   //  Gets the next input token assuming it may be on subsequent
   //  input lines.
   //-----------------------------------------------------------------
       private static String getNextToken() 
      {
         return getNextToken (true);
      }
   
   //-----------------------------------------------------------------
   //  Gets the next input token, which may already have been read.
   //-----------------------------------------------------------------
       private static String getNextToken (boolean skip) 
      {
         String token;
      
         if (current_token == null)
            token = getNextInputToken (skip);
         else
         {
            token = current_token;
            current_token = null;
         }
      
         return token;
      }
   
   //-----------------------------------------------------------------
   //  Gets the next token from the input, which may come from the
   //  current input line or a subsequent one. The parameter
   //  determines if subsequent lines are used.
   //-----------------------------------------------------------------
       private static String getNextInputToken (boolean skip) 
      {
         final String delimiters = " \t\n\r\f";
         String token = null;
      
         try 
         {
            if (reader == null) 
               reader = new StringTokenizer 
                     (in.readLine(), delimiters, true);
         
            while (token == null || 
                     ((delimiters.indexOf (token) >= 0) && skip))
            {
               while (!reader.hasMoreTokens()) 
                  reader = new StringTokenizer 
                        (in.readLine(), delimiters,true);
            
               token = reader.nextToken();
            }
         }
             catch (Exception exception) 
            {
               token = null;
            }
      
         return token;
      }
   
   //-----------------------------------------------------------------
   //  Returns true if there are no more tokens to read on the
   //  current input line.
   //-----------------------------------------------------------------
       public static boolean endOfLine() 
      {
         return !reader.hasMoreTokens();
      }
   
   //*************  Reading Section  *********************************
   
   //-----------------------------------------------------------------
   //  Returns a string read from standard input.
   //-----------------------------------------------------------------
       public static String readString() 
      {
         String str;
      
         try 
         {
            str = getNextToken(false);
            while (! endOfLine())
            {
               str = str + getNextToken(false);
            }
         }
             catch (Exception exception) 
            {
               error ("Error reading String data, null value returned.");
               str = null;
            }
         return str;
      }
   
   //-----------------------------------------------------------------
   //  Returns a space-delimited substring (a word) read from
   //  standard input.
   //-----------------------------------------------------------------
       public static String readWord() 
      {
         String token;
         try 
         {
            token = getNextToken();
         } 
             catch (Exception exception) 
            {
               error ("Error reading String data, null value returned.");
               token = null;
            }
         return token;
      }
   
   //-----------------------------------------------------------------
   //  Returns a boolean read from standard input.
   //-----------------------------------------------------------------
       public static boolean readBoolean() 
      {
         String token = getNextToken();
         boolean bool;
         try
         {
            if (token.toLowerCase().equals("true")) 
               bool = true;
            else if (token.toLowerCase().equals("false")) 
               bool = false;
            else 
            {
               error ("Error reading boolean data, false value returned.");
               bool = false;
            }
         }
             catch (Exception exception)
            {
               error ("Error reading boolean data, false value returned.");
               bool = false;
            }
         return bool;
      }
   
   //-----------------------------------------------------------------
   //  Returns a character read from standard input.
   //-----------------------------------------------------------------
       public static char readChar() 
      {
         String token = getNextToken(false);
         char value;
         try 
         {
            if (token.length() > 1)
            {
               current_token = token.substring (1, token.length());
            } 
            else
               current_token = null;
         
            value = token.charAt (0);
         } 
             catch (Exception exception) 
            {
               error ("Error reading char data, MIN_VALUE value returned.");
               value = Character.MIN_VALUE;
            }
      
         return value;
      }
   
   //-----------------------------------------------------------------
   //  Returns an integer read from standard input.
   //-----------------------------------------------------------------
       public static int readInt() 
      {
         String token = getNextToken();
         int value;
         try 
         {
            value = Integer.parseInt (token);
         } 
             catch (Exception exception) 
            {
               error ("Error reading int data, MIN_VALUE value returned.");
               value = Integer.MIN_VALUE;
            }
         return value;
      }
   
   //-----------------------------------------------------------------
   //  Returns a long integer read from standard input.
   //-----------------------------------------------------------------
       public static long readLong() 
      {
         String token = getNextToken();
         long value;
         try 
         {
            value = Long.parseLong (token);
         } 
             catch (Exception exception) 
            {
               error ("Error reading long data, MIN_VALUE value returned.");
               value = Long.MIN_VALUE;
            }
         return value;
      }
   
   //-----------------------------------------------------------------
   //  Returns a float read from standard input.
   //-----------------------------------------------------------------
       public static float readFloat() 
      {
         String token = getNextToken();
         float value;
         try 
         {
            value = (new Float(token)).floatValue();
         } 
             catch (Exception exception) 
            {
               error ("Error reading float data, NaN value returned.");
               value = Float.NaN;
            }
         return value;
      }
   
   //-----------------------------------------------------------------
   //  Returns a double read from standard input.
   //-----------------------------------------------------------------
       public static double readDouble() 
      {
         String token = getNextToken();
         double value;
         try 
         {
            value = (new Double(token)).doubleValue();
         } 
             catch (Exception exception) 
            {
               error ("Error reading double data, NaN value returned.");
               value = Double.NaN;
            }
         return value;
      }
   }