/**
 * ErrorTypes exam prep questions.
 * @author Alvin Chao
 * @version 12-7-16
 */
 
public class ErrorTypes {
    
    private int attribute;

    /**Constructor.
     *
    */

    private ErrorTypes() {
        this.attribute = 0;  
    }
    
    /**
     * localMethod - test method.
     */
    
    public void localMethod() {
        //localInt = 0;
        System.out.println("localMethod run");
    }
    
    /**
     * Main method.
     * @param args = command line arguments.
     */
         
    public static void main(String[] args) {
        /* Compiler, runtime, or  Neither
        i.Omitting the declaration of a variable
        */
        //variable = 0;
        
        
        /*
        ii. Failing to initialize a class attribute
        */
        ErrorTypes myError; // = new ErrorTypes();
        //myError.toString();
        
        
        
        /*
        iii. Dividing by zero in the source code
        */
        //int result = 10/0;
        
        /*
        iv. Assigning an int to a double variable
        */
        int myInt = 10;
        double myDouble = myInt;
        System.out.println(myDouble);
        
        /*
        v. Using a negative index for an array
        */
        
        String[] words = {"first", "second", "third"};
        //String word = words[-1];
        
        
        /*
        vi. Failing to initialize a local variable
        */
        //localMethod();
        
        //COMMAND LINE ARGUMENTS reading and echoing what you read in.
        
        /*for (String s: args) {
            System.out.println(s);
        }*/
        
        //READING int argument and validating arguments
        
        /*int firstArg;
        if (args.length > 0) {
            firstArg = Integer.parseInt(args[0]);
        } else {
            System.out.println("No arguments");
        } 
        */
        
        //SWITCH STATEMENT for parsing an option
        String option = "";
        int month;
        String monthString = "";
        if (args.length > 0) {
            month = Integer.parseInt(args[0]);
            switch (month) {
                case 1: 
                    monthString = "January";
                    break;
                case 2:  
                    monthString = "February";
                    break;
                case 3:  
                    monthString = "March";
                    break;
                case 4:  
                    monthString = "April";
                    break;
                case 5:  
                    monthString = "May";
                    break;
                case 6:  
                    monthString = "June";
                    break;
                case 7:  
                    monthString = "July";
                    break;
                case 8:  
                    monthString = "August";
                    break;
                case 9:  
                    monthString = "September";
                    break;
                case 10: 
                    monthString = "October";
                    break;
                case 11: 
                    monthString = "November";
                    break;
                case 12: 
                    monthString = "December";
                    break;
                default: 
                    monthString = "Invalid month";
                    break;
            }
            if (args.length > 1) {
                option = args[1];
            } else {
                option = "";
            }           
            switch (option) {
                case "-s":
                    System.out.println(monthString);
                    break;
                case "-i":
                    System.out.println(month);
                    break; 
                default:
                    System.out.println("No option specified");
                    break;           
            } 
        }               
    }
}
