// Imports import java.*; import java.awt.*; import java.io.*; import java.util.*; import java.lang.*; import java.text.*; class DateParse { // * Variables public String[] m_strMonths = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; // * Constructor public DateParse() { } // * Main public static void main(String args[]) { // Declare variables DateParse dpParse = new DateParse(); // Run dpParse.Run(); // Exit System.exit(1); } // * Run public void Run() { // Declare variables NumberFormat nfFormat = NumberFormat.getInstance(); StreamTokenizer stTokens = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); String strInput = new String(""); BufferedReader brInput = new BufferedReader(new InputStreamReader(System.in)); // Setup tokenizer stTokens.eolIsSignificant(true); // Prompt System.out.print("Enter a date in form MM/DD/YY or MM DD, YYYY: "); // Try try { // -- Get user input strInput = brInput.readLine(); // -- Parse Parse(strInput); } catch (IOException ioExcept) { System.out.println("\n\nError: " + ioExcept.toString() + "!\n\n"); System.exit(1); } } // * Handle invalid input public void InvalidInput() { System.out.println("\n\nError: Invalid input.\n\n"); System.exit(1); } // * Parse public void Parse(String strInput) { // Declare variables // Validate if (strInput.length() == 0) { InvalidInput(); } // See what mode we are in if (IsNumeric(strInput.charAt(0)) == true) { ParseNumeric(strInput); } else { ParseString(strInput); } } // * Determines if a character is numeric public boolean IsNumeric(char cChar) { // Validate return Character.isDigit(cChar); } // * Determines if a string is numeric public boolean IsNumeric(String strString) { // Validate for (int i = 0; i < strString.length(); i++) { if (Character.isDigit(strString.charAt(i)) == false) { return false; } } return true; } // * Parse numeric public void ParseNumeric(String strInput) { // Declare variables StringBuffer strBuffer = new StringBuffer(strInput); StringBuffer strOutput = new StringBuffer(""); String strTemp; int nFindStart = 0, nFindEnd = 0; Integer nTemp; // Get the month nFindEnd = strBuffer.indexOf("/", nFindStart); if (nFindEnd == -1) { InvalidInput(); } strTemp = strBuffer.substring(nFindStart, nFindEnd); // -- Validate if (IsNumeric(strTemp) == false) { InvalidInput(); } if (ValidateMonth(new Integer(strTemp)) == false) { InvalidInput(); } // -- Convert month nTemp = new Integer(strTemp); strOutput.append(ConvertMonth(nTemp.intValue()) + " "); // Switch start and end nFindStart = nFindEnd + 1; // Get day nFindEnd = strBuffer.indexOf("/", nFindStart); if (nFindEnd == -1) { InvalidInput(); } strTemp = strBuffer.substring(nFindStart, nFindEnd); // -- Validate if (IsNumeric(strTemp) == false) { InvalidInput(); } // -- Append strOutput.append(strTemp + ", "); // Switch start and end nFindStart = nFindEnd + 1; // Get year strTemp = strBuffer.substring(nFindStart); // -- Validate if (IsNumeric(strTemp) == false) { InvalidInput(); } nTemp = new Integer(strTemp); // -- Append if (strTemp.length() == 2) { if (nTemp.intValue() <= 2) { strOutput.append("20" + strTemp); } else { strOutput.append("19" + strTemp); } } else { strOutput.append(strTemp); } // Output System.out.println("\n\n" + strOutput.toString() + "\n\n"); } // * Parse string public void ParseString(String strInput) { // Declare variables StringBuffer strBuffer = new StringBuffer(strInput); StringBuffer strOutput = new StringBuffer(""); String strTemp; int nFindStart = 0, nFindEnd = 0; Integer nTemp; // Get the month nFindEnd = strBuffer.indexOf(" ", nFindStart); if (nFindEnd == -1) { InvalidInput(); } strTemp = strBuffer.substring(nFindStart, nFindEnd); // -- Validate nTemp = new Integer(ValidateMonth(strTemp)); if (nTemp.intValue() == -1) { InvalidInput(); } // -- Append strOutput.append(nTemp.toString() + "/"); // Switch start and end nFindStart = nFindEnd + 1; // Get day nFindEnd = strBuffer.indexOf(", ", nFindStart); if (nFindEnd == -1) { InvalidInput(); } strTemp = strBuffer.substring(nFindStart, nFindEnd); // -- Append strOutput.append(strTemp + "/"); // Switch start and end nFindStart = nFindEnd + 2; // Get year strTemp = strBuffer.substring(nFindStart); // -- Validate if (IsNumeric(strTemp) == false) { InvalidInput(); } // -- Append strOutput.append(strTemp); // Output System.out.println("\n\n" + strOutput.toString() + "\n\n"); } // * Convert month public String ConvertMonth(int nMonth) { // Convert return m_strMonths[nMonth - 1]; } // * Validate month public boolean ValidateMonth(Integer nMonth) { // Validate if (nMonth.intValue() >= 1 || nMonth.intValue() <= 12) { return true; } return false; } // * Validate month public int ValidateMonth(String strMonth) { // Go through all months for (int i = 0; i < m_strMonths.length; i++) { if (m_strMonths[i].equalsIgnoreCase(strMonth) == true) { return i + 1; } } return -1; } }