S O U R C E C O D E
/ 1998 / 11
/ java
/ java.lst
"Java@Work"
by Al Williams
Web Techniques, November 1998
Web Techniques grants permission to use these listings (and code) for
private or commercial use provided that credit to Web Techniques and
the author is maintained within the comments of the source. For
questions, contact editors@web-techniques.com.
[LISTING ONE]
// Telnumapp.java
// Telephone number applet -Williams
// Simple applet to convert a
// phone number into a string
import java.util.*;
import java.applet.*;
import java.awt.*;
public class Telnumapp extends Applet
{
// UI parts
TextField num;
Button go;
List list;
// Old-style event handler for the button
// Obviously, just for applet
public boolean action(Event evt, Object what)
{
if (evt.target==go)
{
Vector vec;
Enumeration e;
int i;
String s;
s=num.getText();
int nums[]=new int[s.length()];
// create integer input array
for (i=0;i<s.length();i++)
nums[i]=Integer.parseInt(s.substring(i,i+1));
// process it
vec=process(nums);
// display results
e=vec.elements();
list.removeAll();
while (e.hasMoreElements())
list.addItem((String)e.nextElement());
return true;
}
return false;
}
// Initialize applet (applet only)
public void init()
{
setLayout(new BorderLayout());
num=new TextField();
list=new List();
go=new Button("Process");
add(num,"North");
add(go,"Center");
add(list,"South");
show();
}
// This begins the non-applet portion of the code
// The process routine is common to both applet and
// non-applet
// Translation array
static String ary[][]=
{
{"0","0","0"},
{"1","1","1"},
{"A","B","C"},
{"D","E","F"},
{"G","H","I"},
{"J","K","L"},
{"M","N","O"},
{"P","R","S"},
{"T","U","V"},
{"W","X","Y"}
};
// This function actually processes a phone number
// (in integer array form) into a vector of
// strings
static Vector process(int []iary)
{
int[] idx=new int[iary.length];
String result;
Vector rv=new Vector();
mainloop:
while (true)
{
boolean carry=true;
// Construct a new name
result=new String();
for (int q=0;q<iary.length;q++)
result=result+ary[iary[q]][idx[q]];
// Add it to the list of returned names
rv.addElement(result);
// Add 1 to iary using base 3 carry semantics
for (int i=iary.length-1;i>=0&&carry;i--)
{
// but not for 0 or 1, skip those
if (ary[iary[i]][0].equals("0")||ary[iary[i]][0].equals("1"))
{
carry=true;
continue; // only do "0" and "1" one time each
}
idx[i]=idx[i]+1; // add 1 to the current digit
if (idx[i]==3) // overflow?
{
if (i==0) break mainloop; // done!
idx[i]=0;
carry=true;
}
else
{
carry=false;
}
}
}
return rv;
}
// main program - not used when we are an applet
public static void main(String argv[])
{
int i;
Vector v;
Enumeration e;
String s;
int nums[]=new int[argv[0].length()];
// build input array
for (i=0;i<argv[0].length();i++)
nums[i]=Integer.parseInt(argv[0].substring(i,i+1));
// do processing
v=process(nums);
// print elements
e=v.elements();
while (e.hasMoreElements()) System.out.println(e.nextElement());
}
}
|
home
|
current issue
|
archives
|
source code
|
demo express
|
events
|
search
|
editorial calendar
|
advertising
|
customer service
|
author guidelines
|
jobs
|
about
Entire contents copyright 1996-2000 CMP Media Inc.
Read our privacy policy.