   import java.util.Scanner;
   import java.util.Random;

/**********************************************************************
 * Class purpose: Simulate an 8-ball
 * 
 * @author  Archer Harris updated Nancy Harris
 * @version V2 10/15/12
 *********************************************************************/

   public class EightBall
   {
   /******************************************************************
    * Method purpose: simulate a Magic 8-ball
    *
    * @param args Command line arguments, ignored
    *****************************************************************/
      public static void main(String [] args)
      {
         Scanner  stdin;  // Input Stream
         String   wantToAsk; // User input: want to ak a question
         String   questionStr; // User input: the question
         int      answerIndex; // The index value returned by random generator
         String   answerStr; // The program's answer
      
         stdin = new Scanner(System.in);
         System.out.printf("Magic 8 Ball\n\n");
      
         System.out.print("Do you want to ask a question(yes/no)? ");
         wantToAsk = stdin.nextLine();
         System.out.println();
 
 // Wrap a loop around this to keep going while the person wants to ask a 
 // question
         if (!wantToAsk.equalsIgnoreCase("Yes"))
         {
            System.out.print("Goodbye\n");
            System.exit(1);
         }
      //*****************
      // Get the 3 inputs
      //*****************
         System.out.printf("What is your question?\n");
         questionStr = stdin.nextLine();
      
         checkQuestion(questionStr);
      
      //***************
      // Pick an answer
      //***************
         answerIndex = pickRandom();
      
      // Use answerIndex to condition a switch statement.  Print the 
      // result of the answerIndex assignment to be sure you understand what
      // numbers will be generated by the nextInt() method.
         switch (answerIndex)
         {
            case 1:
               answerStr = "Signs point to yes.";
               break;
            case 2: 
               answerStr = "Yes.";
               break;
            case 3:
               answerStr = "Reply hazy, try again.";
               break;
            case 4:
               answerStr = "Without a doubt.";
               break;
            case 5:
               answerStr = "My sources say no.";
               break;
            case 6:
               answerStr = "As I see it, yes.";
               break;
            case 7: 
               answerStr = "You may rely on it.";
               break;
            case 8:
               answerStr = "Concentrate and ask again.";
               break;
            case 9:
               answerStr = "Outlook not so good.";
               break;
            case 10:
               answerStr = "It is decidedly so.";
               break;
            case 11:
               answerStr = "Better not tell you now.";
               break;
            case 12:
               answerStr = "Very doubtful.";
               break;
            case 13:
               answerStr = "Yes - definitely.";
               break;
            case 14:
               answerStr = "It is certain.";
               break;
            case 15:
               answerStr = "Cannot predict now.";
               break;
            case 16:
               answerStr = "Most likely.";
               break;
            case 17: 
               answerStr = "Ask again later.";
               break;
            case 18:
               answerStr = "My reply is no.";
               break;
            case 19:
               answerStr = "Outlook good.";
               break;
            case 20:
               answerStr = "Don't count on it.";
               break;
            default:
               answerStr = "HUH?";
               break;
         }
      
      //***************
      // Output results
      //***************
         System.out.printf("Question: %s\n", questionStr);
         System.out.printf("  Answer: %s\n", answerStr);
      }
   
   /***********************
   * method checkQuestion will check the question entered by the user 
   * and if it is too long, will display the error message and exit the program.
   *
   * @param question The question that was asked
   ***********************/
      public static String checkQuestion(String question)
      {
         String resultQuestion;
         
         // Wrap a while loop around the if to keep going while the question 
         // is too long or too short.
         
         if(question.length() > 60)
         {
            System.out.print("Your question is too long. Try again");
            resultQuestion = "";
         }
         else if (question.length() == 0)
         {
             System.out.print("Your question is too short. Try again");
             resultQuestion = "";
         }
         else 
         {
             resultQuestion = question;
         }
      
         return resultQuestion;
      
      } // end checkQuestion
   
   /***********************
   * method pickRandom will pick a random number from 1 - 20  
   * use the Math.random class to choose a random number between 0 and 1
   * then scale that number to 1 - 20. 
   *
   * @return the random number
   ***********************/
      public static int pickRandom()
      {
         int randomNum;
         randomNum = (Math.random() * 20) + 1;
         return randomNum;
      
      } // end pickRandom
   
   }
