import java.util.*;
import java.io.*;

public class CompareString
{
    static Vector strings = new Vector();
 
    static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    
    public static void main(String[] args)
    {
	while(true)
	    {
		System.out.println("1) Add new string");
		System.out.println("2) List strings");
		System.out.println("3) Compare two strings");
		System.out.println("4) Quit");
		System.out.println();
		
		int chose = getNumber(1,4);
		
		if(chose == 1)
		    add();
		
		if(chose == 2)
		    list();
		
		if(chose == 3)
		    compare();

		if(chose == 4)
		    System.exit(0);

	    }
    }

    private static void add()
    {
	System.out.println();
	System.out.println("Enter new string");

	System.out.print("?");
	try
	    {
		strings.add(input.readLine());
	    }
	catch(IOException e)
	    {
		System.out.println(e);
	    }
    }

    private static void list()
    {
	for(int i=0; i<strings.size(); i++)
	    {
		System.out.println( i + ": " + strings.elementAt(i));
	    }

	System.out.println();
    }

    private static void compare()
    {
	int first, second;
	String sfirst , ssecond;

	System.out.println("Index of first string");
	first = getNumber(0, strings.size()-1);

	System.out.println("Index of second string");
	second = getNumber(0, strings.size()-1);

	sfirst = (String)strings.elementAt(first);
	ssecond = (String)strings.elementAt(second);

	System.out.println();
	System.out.println("Comparison with == : " + (sfirst==ssecond));
	System.out.println("Comparison with equals() : " + sfirst.equals(ssecond));
	System.out.println();
    }

    private static int getNumber(int min, int max)
    {       
	boolean notyet = true;
	while(notyet)
	    {
		System.out.print("?");
		String s = new String("");
		
		try
		    {
			s = input.readLine();
		    }
		catch(IOException e)
		    {
			System.out.println(e);
		    }
		
		int i;

		try
		    {
			i = Integer.parseInt(s);
			
			if(i<=max && i>=min)
			    {
				return i;
			    }
			else
			    {
				System.out.println("Not an option");
			    }
		    }
		catch(NumberFormatException e)
		    {
			System.out.println("Not an option");
		    }
		
		
	    }
	//never here;
	return -128;
	
    }

}
