Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > JAVA
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-04-2004
rex rex is offline
Miembro
 
Registrado: dic 2003
Posts: 81
Poder: 21
rex Va por buen camino
Convertir numero en cadena

alguien me puede indicar en donde conseguir el algoritmo en java para convertir una cantidad numerica en una cadena??


1245.00 = Mil doscientos Cuarenta y cinco
Responder Con Cita
  #2  
Antiguo 21-04-2004
santana santana is offline
No confirmado
 
Registrado: nov 2003
Posts: 1.030
Poder: 0
santana cantidad desconocida en este momento
Aquí......
Responder Con Cita
  #3  
Antiguo 26-05-2004
santana santana is offline
No confirmado
 
Registrado: nov 2003
Posts: 1.030
Poder: 0
santana cantidad desconocida en este momento
Hola a todos.

A pesar de que no es tan difícil desarrollar el código (un poco de iniciativa e imaginación, chic@s!!!) o en su defecto, buscarlo en la red (no dudo que debe ser sencillo encontrarlo), aquí os dejo un mini-ejemplo de la conversión de números a cadenas.

No es que me lo hayan pedido mis innumerables fans, es que me he dado cuenta de que este hilo es bastante visitado y al buscar en el google por las palabras java+convertir+numero+string me he dado cuenta de que el primer enlace que sale, es precisamente el de este thread .

Espero que os sea útil o al menos os sirva de orientación.
Saludos.

Código:
    public class conversionNumeroEnCadena {
    	private int flag;
    	public int numero;
    	public String num;
    	public String num_letra;
    	public String num_letras;
    	public String num_letram;
    		
    	public conversionNumeroEnCadena(){
    		numero = 0;
    		flag=0;
    	}
    	public conversionNumeroEnCadena(int n){
    		numero = n;
    		flag=0;
    	}
    
    	
        private String unidad(int numero){
    		
    		switch (numero){
    		case 9:
    				num = "nueve";
    				break;
    		case 8:
    				num = "ocho";
    				break;
    		...........
    		...........
    
    		case 2:
    				num = "dos";
    				break;
    		case 1:
    				if (flag == 0)
 					num = "uno";
    				else 
 					num = "un";
    				break;
    		case 0:
    				num = "";
    				break;
    		}
    		return num;
    	}
    	
    	private String decena(int numero){
    	
    		if (numero >= 90 && numero <= 99)
    		{
    			num_letra = "noventa ";
    			if (numero > 90)
    				num_letra = 
    			num_letra.concat("y ").concat(unidad(numero - 90));
    		}
    		else if (numero >= 80 && numero <= 89)
    		{
    			num_letra = "ochenta ";
    			if (numero > 80)
    				num_letra = 
    			num_letra.concat("y ").concat(unidad(numero - 80));
    		}
    
    		...........
    		...........
    
    			if (numero == 20)
    				num_letra = "veinte ";
    			else
    				num_letra = 
 				"veinti".concat(unidad(numero - 20));
    		}
    		else if (numero >= 10 && numero <= 19)
    		{
    			switch (numero){
    			case 10:
    
    				num_letra = "diez ";
    				break;
    
    			case 11:
    
    				num_letra = "once ";
    				break;
    
    			case 12:
    
    				num_letra = "doce ";
    				break;
    
    			..............
    			..............
    			case 19:
    			
    				num_letra = "diecinueve ";
    				break;
    			
    			}	
    		}
    		else
    			num_letra = unidad(numero);
    
    	return num_letra;
    	}	
    
    	private String centena(int numero){
    		if (numero >= 100)
    		{
    			if (numero >= 900 && numero <= 999)
    			{
    				num_letra = "novecientos ";
    				if (numero > 900)
 					num_letra = 
 				 num_letra.concat(decena(numero - 900));
    			}
 			else if (numero >= 800 && numero <= 899)
    			{
    				num_letra = "ochocientos ";
    				if (numero > 800)
 					num_letra = 
 				 num_letra.concat(decena(numero - 800));
    			}
    
    			...........
    			...........
    
 			else if (numero >= 200 && numero <= 299)
    			{
    				num_letra = "doscientos ";
    				if (numero > 200)
 					num_letra = 
 				 num_letra.concat(decena(numero - 200));
    			}
 			else if (numero >= 100 && numero <= 199)
    			{
    				if (numero == 100)
 					num_letra = "cien ";
    				else
 					num_letra = 
 				 "ciento ".concat(decena(numero - 100));
    			}
    		}
    		else
    			num_letra = decena(numero);
    		
    		return num_letra;	
    	}	
    
    	private String miles(int numero){
    		if (numero >= 1000 && numero <2000){
    			num_letram = 
    			("mil ").concat(centena(numero%1000));
    		}
    		if (numero >= 2000 && numero <10000){
    			flag=1;
    			num_letram = 
    			unidad(numero/1000).concat("mil").concat
    			(centena(numero%1000));
    		}
    		if (numero < 1000)
    			num_letram = centena(numero);
    		
    		return num_letram;
 	}					 
    
    	
    	public String convertirLetras(int numero){
    		num_letras = miles(numero);
    		return num_letras;
    	} 	
    }

Última edición por santana fecha: 26-05-2004 a las 18:24:56.
Responder Con Cita
  #4  
Antiguo 26-05-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Esto es "pseudojava", pero traducirlo a "pure java" es sencillo. Faltaría tratar los casos especiales como el "once", "doce"... pero de todas maneras creo que así queda más sencillo


Código:
public static String[] literales = 
	[
	 ["", "uno", "dos", "tres",..., "nueve"],
	 ["", "diez", "veinte", ... "noventa"],
	 ["", "ciento", "doscientos", "trescientos"...],
	 ...
	]
 
public static String tranforma(int num){
	int cont = 0;
	int div = num;
	String res = "";
 
	while ( div > 0){
	 res = literales[cont][div % 10] + res;
	 div = int / 10; 
//esto se ha de truncar a int... pero ahora mismo no recuerdo como se hacía
	 cont ++;
	}
	return(res);
 
}
__________________
E pur si muove

Última edición por marto fecha: 26-05-2004 a las 18:45:24.
Responder Con Cita
  #5  
Antiguo 24-10-2007
chikipow chikipow is offline
Registrado
 
Registrado: oct 2007
Posts: 2
Poder: 0
chikipow Va por buen camino
gracias por el codigo santana lo buscaba desde hace tiempo, crees que puedas agregar la parte de los millones, decenas y centenas de 1000 y los decimales, realmente lo necesito para un proyecto

PD: tengo un problema cuando lo complete y corri en java salia "ilegar start of type" cuando decia if o else if

Última edición por chikipow fecha: 24-10-2007 a las 04:18:34.
Responder Con Cita
  #6  
Antiguo 24-10-2007
Avatar de Arcioneo
Arcioneo Arcioneo is offline
Miembro
 
Registrado: jul 2006
Ubicación: Tierra
Posts: 583
Poder: 18
Arcioneo Va por buen camino
Red face Nada tio

Cita:
Empezado por chikipow Ver Mensaje
gracias por el codigo santana lo buscaba desde hace tiempo, crees que puedas agregar la parte de los millones, decenas y centenas de 1000 y los decimales, realmente lo necesito para un proyecto

PD: tengo un problema cuando lo complete y corri en java salia "ilegar start of type" cuando decia if o else if


Que no sabes lo que es PSEUDOCODIGO?
__________________
"Porque es tan idiotamente sorda la fé y tan ciego el que cree?".
Responder Con Cita
  #7  
Antiguo 25-10-2007
chikipow chikipow is offline
Registrado
 
Registrado: oct 2007
Posts: 2
Poder: 0
chikipow Va por buen camino
realmente no mucho, apenas estoy empezando a programar
Responder Con Cita
  #8  
Antiguo 25-10-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
Empezado por chikipow Ver Mensaje
realmente no mucho, apenas estoy empezando a programar
Pues deberias estudiar un poco mas, ah y por cierto ya vistes la fecha de este hilo¿¿¿
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:19:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi