Java:基于ISO 4217货币代码的货币符号
下面的程序打印给定ISO 4217货币代码的货币符号Java:基于ISO 4217货币代码的货币符号,java,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
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
返回相对于默认区域设置的货币符号
获取默认区域设置的此货币的符号。例如,对于美元,如果默认区域设置为美国,则符号为“$”
,而对于其他区域设置,则符号可能为“US$”
。如果无法确定符号,则返回ISO 4217货币代码
如果希望符号用于其他区域设置,请使用
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 €
()。对我来说,即使在第一种情况下,您的代码也会返回美元。看起来,这种货币在很大程度上依赖于JRE版本(我是1.6版)。Perosnaly我建议您编写自己的CUR-to-symbol转换模块-这比尝试使用此模块要容易得多。使用有限的语言环境enum的唯一功能来满足西化符号。如果您想更加全球化,请尝试使用以下提供的区域设置:
Locale[] locales = Locale.getAvailableLocales();
使用此列表中的区域设置给出的是符号,而不是TLA。如果有人需要,则相反(例如€->欧元)
@polygenelubricats:当我们还了解地区和国家时,上述方法有效。我目前只有ISO 4217货币cod,其他什么都没有。我需要从货币代码中找出区域设置,然后实现将类似于上述代码。@PolygeneLubricts:是的,非常类似,但我不需要打印区域设置,只需要该本地货币的货币符号。但是这种方法很有帮助,谢谢。默认Java实现的问题是它太愚蠢了。例如,如果我在美国地区显示欧元,我应该看到75欧元,而不是75欧元——美国的每个人都知道实际的欧元符号比“欧元”好得多。因此,我总是必须使用自定义代码,比如手动设置DecimalFormatSymbols,以获得外观良好的输出,而不是依赖于stock实现。这不起作用。对于所有其他货币,它仍然只给出$符号。它只给出货币代码,例如欧元。
String currency = €;
String currencyCode = "";
for (Currency c : Currency.getAvailableCurrencies()) {
if (c.getSymbol().equals(currency)) {
currencyCode = c.toString();
}
}