/*-------------------------------------------------------------------* * NTU Student: Java With Engineering Applications, Spring 1999 * Assignment # 4 - Java How To Program 2nd edition, Deitel & Deitel * Problem 8.12 on page 461 - CLASS Number applet created to practice * string tokenization techniques * * Michael Kusmierz * Xerox Corporation * Rev 1.0 May 4, 1999 * * This code represents a students work in progress * and is not to be used beyond that purpose. *-------------------------------------------------------------------*/ import java.applet.*; import java.awt.*; import java.awt.event.*; import java.util.*; /** * This type was created in VisualAge. */ public class Number extends Applet implements ActionListener { private Button ivjbtnTokenize = null; private Label ivjlblProblemTitle = null; private TextArea ivjTextArea1 = null; private TextField ivjtxtField = null; private Label ivjlblEnterNumber = null; /***************************************************************************** * This method was created in VisualAge. * @param e ActionEvent */ public void actionPerformed( ActionEvent e ) { tokenizationProcess(); } /***************************************************************************** * Gets the applet information. * @return java.lang.String */ public String getAppletInfo() { return "Number created using VisualAge for Java."; } /***************************************************************************** * Return the btnTokenize property value. * @return java.awt.Button */ /* WARNING: THIS METHOD WILL BE REGENERATED. */ private Button getbtnTokenize() { if (ivjbtnTokenize == null) { try { ivjbtnTokenize = new java.awt.Button(); ivjbtnTokenize.setName("btnTokenize"); ivjbtnTokenize.setBounds(177, 54, 63, 23); ivjbtnTokenize.setLabel("Tokenize"); // user code begin {1} // user code end } catch (java.lang.Throwable ivjExc) { // user code begin {2} // user code end handleException(ivjExc); } }; return ivjbtnTokenize; } /** * Return the lblEnterNumber property value. * @return java.awt.Label */ /* WARNING: THIS METHOD WILL BE REGENERATED. */ private Label getlblEnterNumber() { if (ivjlblEnterNumber == null) { try { ivjlblEnterNumber = new java.awt.Label(); ivjlblEnterNumber.setName("lblEnterNumber"); ivjlblEnterNumber.setText("Enter a number: ex. (123) 456-7890"); ivjlblEnterNumber.setBounds(10, 31, 211, 23); // user code begin {1} // user code end } catch (java.lang.Throwable ivjExc) { // user code begin {2} // user code end handleException(ivjExc); } }; return ivjlblEnterNumber; } /***************************************************************************** * Return the lblProblemTitle property value. * @return java.awt.Label */ /* WARNING: THIS METHOD WILL BE REGENERATED. */ private Label getlblProblemTitle() { if (ivjlblProblemTitle == null) { try { ivjlblProblemTitle = new java.awt.Label(); ivjlblProblemTitle.setName("lblProblemTitle"); ivjlblProblemTitle.setFont(new java.awt.Font("dialog", 1, 12)); ivjlblProblemTitle.setText("Problem 8.12 Telephone Number Tokenizer"); ivjlblProblemTitle.setBounds(7, 7, 256, 23); // user code begin {1} // user code end } catch (java.lang.Throwable ivjExc) { // user code begin {2} // user code end handleException(ivjExc); } }; return ivjlblProblemTitle; } /***************************************************************************** * Return the TextArea1 property value. * @return java.awt.TextArea */ /* WARNING: THIS METHOD WILL BE REGENERATED. */ private TextArea getTextArea1() { if (ivjTextArea1 == null) { try { ivjTextArea1 = new java.awt.TextArea(); ivjTextArea1.setName("TextArea1"); ivjTextArea1.setBounds(10, 88, 232, 217); // user code begin {1} // user code end } catch (java.lang.Throwable ivjExc) { // user code begin {2} // user code end handleException(ivjExc); } }; return ivjTextArea1; } /***************************************************************************** * Return the txtField property value. * @return java.awt.TextField */ /* WARNING: THIS METHOD WILL BE REGENERATED. */ private TextField gettxtField() { if (ivjtxtField == null) { try { ivjtxtField = new java.awt.TextField(); ivjtxtField.setName("txtField"); ivjtxtField.setText("(555) 555-5555"); ivjtxtField.setBounds(8, 55, 110, 23); // user code begin {1} // user code end } catch (java.lang.Throwable ivjExc) { // user code begin {2} // user code end handleException(ivjExc); } }; return ivjtxtField; } /**************************************************************************** * Called whenever the part throws an exception. * @param exception java.lang.Throwable */ private void handleException(Throwable exception) { /* Uncomment the following lines to print uncaught exceptions to stdout */ // System.out.println("--------- UNCAUGHT EXCEPTION ---------"); // exception.printStackTrace(System.out); } /******************************************************************************** * INIT - Handle the Applet init method. */ /* WARNING: THIS METHOD WILL BE REGENERATED. */ public void init() { super.init(); try { setName("Number"); setLayout(null); setSize(318, 334); add(gettxtField(), gettxtField().getName()); add(getbtnTokenize(), getbtnTokenize().getName()); add(getTextArea1(), getTextArea1().getName()); add(getlblProblemTitle(), getlblProblemTitle().getName()); add(getlblEnterNumber(), getlblEnterNumber().getName()); // user code begin {1} ivjbtnTokenize.addActionListener(this); ivjTextArea1.setEditable(false); // user code end } catch (java.lang.Throwable ivjExc) { // user code begin {2} // user code end handleException(ivjExc); } } /***************************************************************************** * main entrypoint - starts the part when it is run as an application * @param args java.lang.String[] */ public static void main(java.lang.String[] args) { try { Frame frame; try { Class aFrameClass = Class.forName("com.ibm.uvm.abt.edit.TestFrame"); frame = (Frame)aFrameClass.newInstance(); } catch (java.lang.Throwable ivjExc) { frame = new Frame(); } Number aNumber; Class iiCls = Class.forName("Number"); ClassLoader iiClsLoader = iiCls.getClassLoader(); aNumber = (Number)java.beans.Beans.instantiate(iiClsLoader,"Number"); frame.add("Center", aNumber); frame.setSize(aNumber.getSize()); frame.setVisible(true); } catch (Throwable exception) { System.err.println("Exception occurred in main() of java.applet.Applet"); exception.printStackTrace(System.out); } } /******************************************************************************* * TOKENIZATION PROCESS - This method takes in a phone number string and * tokenizes it. Then the strings are converted to numbers. * If entry errors are detected, the user is informed with a warning and the * best guess is given. */ private void tokenizationProcess() { String strS = new String(""); String[] strTokensArray = {"","","","","",""}; String strAreaCode, strPhoneNum; int intAreaCode=0; long lngPhoneNum=0; int i = 0; //--- get the inputed phone number strS = ivjtxtField.getText(); //--- Change delimiter characters within tokenization process strS = strS.replace('(','\n'); strS = strS.replace(')','\n'); strS = strS.replace('-','\n'); //--- Tokenize with java.util.* StringTokenizer tokens = new StringTokenizer(strS); ivjTextArea1.append(""+tokens.countTokens() +" Token Strings:" + "\n"); i=0; while ( tokens.hasMoreTokens() && i<6 ) { strTokensArray[i] = tokens.nextToken(); ivjTextArea1.append("\t"+strTokensArray[i] + "\n"); i++; } ivjTextArea1.append("-------------------Results---------------------------"+"\n"); //--- Check for three tokens if (i!=3) ivjTextArea1.append(">POOR ENTRY FORMAT."+ "\n"); //--- Build strings and do some validity checks strAreaCode = strTokensArray[0].trim(); if ( strAreaCode.length() != 3 ) ivjTextArea1.append(">AREA CODE REQUIRES 3 DIGITS."+ "\n"); strPhoneNum = strTokensArray[1].trim() + strTokensArray[2].trim(); if (strPhoneNum.length() != 7) ivjTextArea1.append(">PHONE# REQUIRES 7 DIGITS."+ "\n"); //--- Convert strings to numbers per problem statement 8.12 try { intAreaCode = Integer.parseInt(strAreaCode); lngPhoneNum = Long.parseLong(strPhoneNum); } catch (Throwable exception) { ivjTextArea1.append(">TRY AGAIN-NUMBERS PLEASE."+ "\n"); //System.err.println("Exception occurred in main() of java.applet.Applet"); //exception.printStackTrace(System.out); } //--- Update display ivjTextArea1.append("AREA CODE (int) = \t"+intAreaCode + "\n"); ivjTextArea1.append("PHONE # (long) = \t"+lngPhoneNum + "\n"); ivjTextArea1.append("\n"+ "\n"); } }