Java:基于ISO 4217货币代码的货币符号

时间:2010-10-22 05:01:12

标签: java

以下程序打印给定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());
    }
}

问题:输入字符串USD时工作正常。对于像EUR这样的其他输入,只需返回货币代码。

示例输入,来自程序的输出:

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

4 个答案:

答案 0 :(得分:25)

Currency.getSymbol()返回相对于默认语言环境的货币符号。

  

获取默认语言环境的此货币的符号。例如,对于美元,如果默认语言环境是美国,则符号为"$",而对于其他语言环境,符号为"US$"。如果无法确定符号,则返回ISO 4217货币代码。

如果您希望该符号用于其他语言区域,请使用Currency.getSymbol(Locale 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)。

答案 1 :(得分:2)

对我来说,即使在第一种情况下,您的代码也会返回美元。这看起来,货币在很大程度上取决于JRE版本(对我来说是1.6)。 Perosnally我建议你编写自己的CUR到符号转换模块 - 比尝试使用这个模块容易得多。

答案 2 :(得分:0)

如果有人需要反过来(例如€ - > EUR)

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

答案 3 :(得分:-1)

使用有限的Locale枚举仅适用于西化符号。如果您希望使用以下提供的语言环境进行更全面的尝试:

Locale[] locales = Locale.getAvailableLocales();

使用此列表中的区域设置给出符号而不是TLA非常一致。