Below program prints the Currency symbol given the ISO 4217 currency code.
import java.util.*;
public class Currency{
public static void main(String args[]
Currency.getSymbol() returns the currency symbol relative to the default locale.
Gets the symbol of this currency for the default locale. For example, for the US Dollar, the symbol is
"$"
if the default locale is the US, while for other locales it may be"US$"
. If no symbol can be determined, the ISO 4217 currency code is returned.
Use Currency.getSymbol(Locale locale) if you want the symbol for a different locale.
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).
For me, your code even in the first case returns USD. It seemes, that Currency heavily depends on the JRE version (1.6 for me). Perosnally I recommend you to write your own CUR to symbol conversion module - it will be much easier, than try to use this one.
Using the limited Locale enum's only caters for westernised symbols. If you want to be a little more global try using Locales provided by:
Locale[] locales = Locale.getAvailableLocales();
Using Locales from this list gave symbols rather than TLA's pretty consistently.
If someone needs it the other way round (for example € -> EUR)
String currency = €;
String currencyCode = "";
for (Currency c : Currency.getAvailableCurrencies()) {
if (c.getSymbol().equals(currency)) {
currencyCode = c.toString();
}
}