package numbers; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.Label; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * GetNumber - program to determine if a number is float or int. * * @author Ian Darwin, http://www.darwinsys.com/ * @version $Id: GetNumber.java,v 1.9 2007/05/30 09:29:36 ian Exp $ */ public class GetNumber extends Frame { /** The input textField */ private TextField textField; /** The results area */ private TextField statusLabel; /** Constructor: set up the GUI */ public GetNumber() { Panel p = new Panel(); p.add(new Label("Number:")); p.add(textField = new TextField(10)); add(BorderLayout.NORTH, p); textField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ev) { String s = textField.getText(); statusLabel.setText(process(s).toString()); } }); add(BorderLayout.SOUTH, statusLabel = new TextField(10)); pack(); } private static Number NAN = new Double(Double.NaN); /* Process one String, returning it as a Number subclass * Does not require the GUI. */ public static Number process(String s) { if (s.matches("[+-]*\\d*\\.\\d+[dDeEfF]*")) { try { double dValue = Double.parseDouble(s); System.out.println("It's a double: " + dValue); return Double.valueOf(dValue); } catch (NumberFormatException e) { System.out.println("Invalid a double: " + s); return NAN; } } else // did not contain . d e or f, so try as int. try { int iValue = Integer.parseInt(s); System.out.println("It's an int: " + iValue); return Integer.valueOf(iValue); } catch (NumberFormatException e2) { System.out.println("Not a number: " + s); return NAN; } } public static void main(String[] ap) { new GetNumber().setVisible(true); } }