以下程序打印给定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
答案 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 €
答案 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非常一致。