没有获取特定区域设置的货币符号 [英] Not getting currency symbols for specific Locale

查看:127
本文介绍了没有获取特定区域设置的货币符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试根据他们的Locale获取货币的符号。但它没有返回符号,而是返回代码。我有一个片段:

I am trying to get the symbols of the currencies based on their Locale. But instead of returning a symbol, it is returning the code. I have a snippet:

import java.util.Currency;
import java.util.Locale;

public class CurrencyFormat
{
  public void displayCurrencySymbols() 
  {
   Currency currency = Currency.getInstance(Locale.US); 
   System.out.println("United States: " + currency.getSymbol());
  } 
  public static void main(String[] args)
  {
    new CurrencyFormat().displayCurrencySymbols();
  }
}

Locale.US 它给出符号 $ 但如果我替换

For Locale.US it is giving symbol $ but If I replace

Currency currency = Currency.getInstance(Locale.US); 

with

Currency currency = Currency.getInstance(Locale.GERMANY); 

然后它代替符号给出国家代码。为什么这样以及我们如何获得这些符号?

Then instead of symbol it is giving the country code. Why is this and how we can get the symbols?

编辑:在看了一些答案后我想清除设置一些特定的默认本地不是解决方案,因为我需要一次显示所有可用的符号

EDIT : After looking some answer I would like to clear that setting some specific default local is not a solution as I need all the avalaible sign displayed at once.

例如

 Locale.setDefault(Locale.UK); 

会给我欧元符号但是对于doller它会给代码而不是doller sign($) 。

will give me the euro sign but for doller it will give the code instead of doller sign($).

推荐答案

您好请尝试以下代码

import java.text.NumberFormat;
import java.util.Comparator;
import java.util.Currency;
import java.util.Locale;
import java.util.SortedMap;
import java.util.TreeMap;

public class CurrencyExample
{
    public static void main(String[] args) 
    {
         Utils.getCurrencySymbol( Currency.getInstance(Locale.US).getCurrencyCode());
         Utils.getCurrencySymbol(Currency.getInstance(Locale.JAPAN).getCurrencyCode());
         Utils.getCurrencySymbol(Currency.getInstance(Locale.UK).getCurrencyCode());
         Utils.getCurrencySymbol("INR");
    }
}

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));
    }
}

上述程序的输出如下:

USD:-$
JPY:-¥
GBP:-£
INR:-Rs.

这篇关于没有获取特定区域设置的货币符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆