2010-10-22 49 views
19

El programa debajo imprime el símbolo de moneda dado el código de moneda ISO 4217.Java: símbolo de moneda basado en el código de moneda ISO 4217

import java.util.*; 

public class Currency{ 

    public static void main(String args[]) { 
     Currency myInstance = Currency.getInstance(args[0]); 
     System.out.println(myInstance.getSymbol()); 
    } 
} 

Problema: funciona bien cuando la cadena es de USD de entrada. Para otras entradas como EUR simplemente devuelva el código de moneda.

entrada de la muestra, ouput del programa:

input: java Currency USD 
output: $ 
input: java Currency EUR 
output: EUR -> I expect the symbol of Euro here 

Respuesta

25

Currency.getSymbol() devuelve el símbolo de moneda con respecto a la configuración regional predeterminada.

Obtiene el símbolo de esta moneda para la configuración regional predeterminada. Por ejemplo, para el dólar estadounidense, el símbolo es "$" si la configuración regional predeterminada es EE. UU., Mientras que para otras configuraciones regionales puede ser "US$". Si no se puede determinar ningún símbolo, se devuelve el código de moneda ISO 4217.

Use Currency.getSymbol(Locale locale) si desea el símbolo para una configuración regional diferente.

System.out.println(
    Currency.getInstance("USD").getSymbol(Locale.US) 
); 
// prints $ 

System.out.println(
    Currency.getInstance("USD").getSymbol(Locale.FRANCE) 
); 
// prints USD 

System.out.println(
    Currency.getInstance("EUR").getSymbol(Locale.US) 
); 
// prints EUR 

System.out.println(
    Currency.getInstance("EUR").getSymbol(Locale.FRANCE) 
); 
// prints € 

(see also on ideone.com).

+0

@polygenelubricats: Los trabajos anteriores, cuando también sabemos el país local. Actualmente solo tengo el bacalao de divisas ISO 4217 y nada más. Necesito averiguar la configuración regional desde el código de moneda y luego la implementación sería similar al código anterior. –

+0

@Eternal: ¿necesitas algo como esto? http://www.ideone.com/kjYfV – polygenelubricants

+0

@polygenelubricats: Sí, muy similar, pero en lugar de imprimir Locale, solo necesito el símbolo de moneda en ese local. Pero este enfoque ayuda gracias. –

2

Para mí, su código incluso en el primer caso devuelve USD. Parece que esa moneda depende en gran medida de la versión de JRE (1.6 para mí). Perosnally te recomiendo que escribas tu propio CUR al módulo de conversión de símbolos; será mucho más fácil que tratar de usar este.

-1

Uso de la configuración regional limitada de Enum solo para símbolos occidentalizados. Si quieres ser un poco más global intentar usar Locales proporcionadas por:

Locale[] locales = Locale.getAvailableLocales(); 

Usando Locales de esta lista dio símbolos en lugar de TLA bastante consistente.

+0

No funciona. Todavía da solo $ símbolo para todos los demás, solo da códigos de moneda, p. EUR. –

0

Si alguien lo necesita al revés (por ejemplo € -> EUR)

String currency = €; 
String currencyCode = ""; 
for (Currency c : Currency.getAvailableCurrencies()) { 
    if (c.getSymbol().equals(currency)) { 
     currencyCode = c.toString(); 
    } 
} 
Cuestiones relacionadas