Reputation: 852
I want get Currency symbol (like $ or £) by currency name (like USD or EUR).
For English(US) I can get symbol (if English(US) set as language on device):
Currency currency = Currency.getInstance(Locale.getDefault());
String symbol = currency.getSymbol()); // $
How can I get symbol for currency by currency name using android tools -
someMethod (String currCode) { // currCode - USD, EUR, UAH
return currSymbol; // $...
}
Upvotes: 50
Views: 43788
Reputation: 141
You can simply use this code to get the currency symbol and different currency formats. Here the variable "curr" will take the input value from user. And then convert it into different currency formats along with their symbols. In this I have explained 4 currency format. In this way you can use format for other countries also.
import java.util.*;
import java.text.*;
public class CurrencyConvertor{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double curr = scanner.nextDouble();
scanner.close();
if(curr>=0 && curr<=1000000000){
NumberFormat france = NumberFormat.getCurrencyInstance(Locale.FRANCE);
NumberFormat us = NumberFormat.getCurrencyInstance(Locale.US);
NumberFormat china = NumberFormat.getCurrencyInstance(Locale.CHINA);
NumberFormat india = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
System.out.println("France: " + france.format(curr));
System.out.println("US: " + us.format(curr));
System.out.println("India: "+NumberFormat.getCurrencyInstance(new Locale("en","IN")).format(curr));
System.out.println("China: "+ china.format(curr));
}
}
}
Upvotes: 1
Reputation: 3702
This works for me.
Currency currency = Currency.getInstance("GBP");
String symbol = currency.getSymbol();
Upvotes: 17
Reputation: 2509
You can try some like this:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Utils.getCurrencySymbol(Currency.getInstance(Locale.US).getCurrencyCode());
Utils.getCurrencySymbol(Currency.getInstance(Locale.JAPAN).getCurrencyCode());
Utils.getCurrencySymbol(Currency.getInstance(Locale.UK).getCurrencyCode());
//for your case that you want to get Euro symbol because France are with Euro symnol
Utils.getCurrencySymbol(Currency.getInstance(Locale.FRANCE).getCurrencyCode());
//you can get symbol also if you write string of your desired currency
Utils.getCurrencySymbol("INR");
}
static class Utils {
public static SortedMap<Currency, Locale> currencyLocaleMap;
static {
currencyLocaleMap = new TreeMap<Currency, Locale>(new Comparator<Currency>() {
public int compare(Currency c1, Currency c2) {
return c1.getCurrencyCode().compareTo(c2.getCurrencyCode());
}
});
for (Locale locale : Locale.getAvailableLocales()) {
try {
Currency currency = Currency.getInstance(locale);
currencyLocaleMap.put(currency, locale);
} catch (Exception e) {
}
}
}
public static String getCurrencySymbol(String currencyCode) {
Currency currency = Currency.getInstance(currencyCode);
System.out.println(currencyCode + ":-" + currency.getSymbol(currencyLocaleMap.get(currency)));
return currency.getSymbol(currencyLocaleMap.get(currency));
}
}
}
Upvotes: 36
Reputation: 10591
Currency symbol depends on location. The same $ sign means different currencies in US and Australia. So, to get the correct symbol you have to provide the Locale instance. Otherwise, a default locale will be applied, which will result in different values for different devices.
Locale uk = new Locale("en", "GB");
Currency pound = Currency.getInstance("GBP");
pound.getSymbol(uk);
Upvotes: 24
Reputation: 928
I've solved this problem to create a Map which has the key is the currency code and the value is the symbol.
public final Map<String, String> CURRENCIES= new HashMap<String, String>(){
{
put("EUR","€");
put("USD","$");
...
}
};
Then, you can get the symbol by using Locale, like this.
Currency currency = Currency.getInstance(Locale.getDefault());
String symbol = CURRENCIES.get(currency.getCurrencyCode());
Upvotes: 8
Reputation: 650
I believe java.util.currency is the class you need, call getSymbol to get symbol from currency name
http://developer.android.com/reference/java/util/Currency.html
Upvotes: 8