nose si asi te sirva en java pero alli va....
copialo, pegalo y ejecutalo en algun compilador de java y lo veras mejor....
recive numeros negativos....
/* ************************************************************************** *
* Programa que lee un número cualquiera mayor que -9999 y menor que 9999 *
* y regresa su equivalente en letras ej: 4520 = cuatro mil quinientos veinte *
* ************************************************************************** *
* Creado por: Luis Fernando Avila Manjarres *
* Estudiante de Ingenieria de Sistemas II semestre *
* Corporacion Universitaria Rafael Nuñez (Cartagena, Colombia) *
* Fecha de creación: 4 de Junio de 2007 *
* ************************************************************************** */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Decimal_Letras_Arreglo extends JFrame implements ActionListener {
private JLabel numero, letras;
private JTextField numeroEdi, salida;
private JTextArea areaSalida;
private JButton aceptar;
public Decimal_Letras_Arreglo (){
Container contenedor = getContentPane ();
contenedor.setLayout (new FlowLayout());
numero = new JLabel("Digite Numero: ");
numeroEdi = new JTextField (20);
contenedor.add (numero);
contenedor.add (numeroEdi);
aceptar = new JButton ("Aceptar");
contenedor.add (aceptar);
letras = new JLabel("Equivalente en letras: ");
salida = new JTextField (30);
salida.setEditable (false);
contenedor.add (letras);
contenedor.add (salida);
aceptar.addActionListener (this);
numeroEdi.addActionListener (this);
setSize (500, 150);
setVisible (true);
} // fin constructor
public void actionPerformed (ActionEvent evento) {
String r="";
if (evento.getSource() == aceptar || evento.getSource()== numeroEdi) {
int num = Integer.parseInt (numeroEdi.getText());
if (num <-9999 || num>9999)
JOptionPane.showMessageDialog (null, "digite número mayor que -9999 y menor que 9999",
"Error", JOptionPane.ERROR_MESSAGE);
else
r= numeroEnLetras(num);
} // fin if
salida.setText (r);
} // fin metodo actionPerformed
public static String hastaNueve (int num) {
String cero_nueve[] = {"cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve"};
return cero_nueve[num];
} // fin metodo hastaNueve
public static String hastaVeinte (int num) {
String once_diecinueve[] = {"", "once", "doce", "trece", "catorce", "quince", "dieciseis", "diecisiete", "dieciocho", "diecinueve"};
return once_diecinueve[num];
} // fin metodo hastaVeinte
public static String decenas (int num) {
String arreglo_decenas []= {"", "diez", "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "sententa", "ochenta", "noventa"};
return arreglo_decenas[num];
} // fin metodo decenas
public static String hastaCien (int num) {
String veinti_noventa[] = {"", "", "veinti", "treinta y ", "cuarenta y ", "cincuenta y ", "sesenta y ", "setenta y ", "ochenta y ", "noventa y "};
return veinti_noventa[num];
} // fin metodo cien
public static String hastaMil (int num) {
String ciento_mil [] ={"", "ciento ", "doscientos ", "trecientos ", "cuatrocientos ", "quinientos ", "seiscientos ", "setecientos ", "ochocientos ", "novecientos "};
return ciento_mil[num];
} // fin metodo hastaMil
public static String hastaDiezMil (int num) {
String mil_nueveMil [] = {"", "mil ", "dos mil ", "tres mil ", "cuatro mil ", "cinco mil ", "seis mil ", "siete mil ", "ocho mil ", "nueve mil "};
return mil_nueveMil[num];
} // fin metodo hastaDiezMil
public static String numeroEnLetras (int num) {
String respuesta ="";
boolean negativo = false;
if (num<0) {
num *= -1;
negativo = true;
} // fin if
if (num<10) {
respuesta = hastaNueve(num);
} // fin if
else if (num>=10) {
int i=1;
boolean controlador = false;
while (num>=10) {
int r= num%10;
num /= 10;
if (i==1){ // if
if (r == 0)
controlador = true;
else if (num%10==1)
respuesta = hastaVeinte (r);
else
respuesta = hastaNueve (r);
} // fin if
else if (i==2) {
if (controlador && r!=0) {
respuesta = decenas (r);
controlador = false;
} // fin if
else if (r==0)
controlador = true;
else
respuesta = hastaCien (r) + respuesta;
} // fin else if
else if (i==3) { // else if 1
if (controlador && r!=0) {
respuesta = (r==1) ? "cien" : hastaMil (r);
controlador = false;
} // fin if
else if (r==0)
controlador = true;
else
respuesta = hastaMil (r) + respuesta;
} // fin else if 1
i++;
} // fin while
if (i==2){
if (controlador)
respuesta = decenas (num);
else
respuesta = hastaCien (num) + respuesta;
} // fin if
else if (i==3){
if (controlador)
respuesta = hastaMil (num) + respuesta;
else
respuesta = hastaMil (num) + respuesta;
} // fin else if
else if (i==4)
respuesta = hastaDiezMil (num) + respuesta;
} // fin else if 1
if (negativo)
respuesta = "menos " + respuesta; // fi es negativo anteponerle menos
return respuesta;
} // fin metodo numeroEnLetras
public static void main (String args[]) {
Decimal_Letras_Arreglo aplicacion = new Decimal_Letras_Arreglo () ;
aplicacion.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
} // fin metodo main
} // fin clase