import java.util.Scanner;
import java.util.Random;

/**********************************************************************
 * Class purpose: Simulate an 8-ball
 * 
 * @author  Archer Harris
 * @version 10/4/05
 *********************************************************************/

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      seed;		// Userr input: the random generator seed
      Random   answerPicker;	// The random generator object
      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();
		
		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();
		
		if(questionStr.length() > 60)
		{
			System.out.print("Your question is too long. Be more concise.\nGoodbye\n");
			System.exit(2);
		}
		
		// Get a seed value.
      System.out.printf("Type a large positive integer: ");
		if (stdin.hasNextInt())
			seed = stdin.nextInt();
		else
			seed = Integer.MAX_VALUE;
			
      System.out.printf("\n");

      //***************
      // Pick an answer
      //***************
      answerPicker = new Random(seed);
      answerIndex = answerPicker.nextInt(20) + 1;
		
		// 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);
   }
}
