Java 将iso 4217数字货币代码转换为货币名称
我有一个ISO 4217数字货币代码:Java 将iso 4217数字货币代码转换为货币名称,java,iso,applepay,Java,Iso,Applepay,我有一个ISO 4217数字货币代码:840 我想获取货币名称:USD 我正在尝试这样做: Currency curr1 = Currency.getInstance("840"); 但我一直在 java.lang.IllegalArgumentException 如何修复?有什么想法吗?java.util.Currency.getInstance只支持ISO 4217货币代码,不支持货币编号。但是,您可以使用getAvailableCurrences方法检索所有货币,然后通过比较getNu
840
我想获取货币名称:USD
我正在尝试这样做:
Currency curr1 = Currency.getInstance("840");
但我一直在
java.lang.IllegalArgumentException
如何修复?有什么想法吗?
java.util.Currency.getInstance
只支持ISO 4217货币代码,不支持货币编号。但是,您可以使用getAvailableCurrences
方法检索所有货币,然后通过比较getNumericCode
方法的结果来搜索代码为840的货币
像这样:
public static Currency getCurrencyInstance(int numericCode) {
Set<Currency> currencies = Currency.getAvailableCurrencies();
for (Currency currency : currencies) {
if (currency.getNumericCode() == numericCode) {
return currency;
}
}
throw new IllegalArgumentException("Currency with numeric code " + numericCode + " not found");
}
public静态货币getCurrencyInstance(int numericCode){
设置货币=货币。GetAvailableCurrences();
用于(货币:货币){
if(currency.getNumericCode()==numericCode){
返回货币;
}
}
抛出新的IllegalArgumentException(“带数字代码的货币”+数字代码+“未找到”);
}
您必须提供类似“USD”的代码,然后它将返回Currency对象。如果您使用的是JDK 7,那么可以使用以下代码。JDk 7有一个方法getAvailableUrrences()
更好的方法是:
public class CurrencyHelper {
private static Map<Integer, Currency> currencies = new HashMap<>();
static {
Set<Currency> set = Currency.getAvailableCurrencies();
for (Currency currency : set) {
currencies.put(currency.getNumericCode(), currency);
}
}
public static Currency getInstance(Integer code) {
return currencies.get(code);
}
}
公共类CurrencyHelper{
私有静态映射货币=新HashMap();
静止的{
Set=Currency.getAvailableCurrences();
用于(币种:设置){
currency.put(currency.getNumericCode(),currency);
}
}
公共静态货币getInstance(整数代码){
返回货币。获取(代码);
}
}
只需做一点工作,缓存就可以变得更高效。有关更多信息,请查看Currency类的源代码。使用Java 8:
Optional currency=currency.getAvailablecurrences().stream().filter(c->c.getNumericCode()==840.findAny();
您必须提供一个区域设置
。我还可以提供一个字符串:getInstance(string currencyCode)返回给定货币代码的货币实例。我可以从数字代码中获取区域设置吗?如果您只想将代码映射到货币单位,为什么不使用映射?
public class CurrencyHelper {
private static Map<Integer, Currency> currencies = new HashMap<>();
static {
Set<Currency> set = Currency.getAvailableCurrencies();
for (Currency currency : set) {
currencies.put(currency.getNumericCode(), currency);
}
}
public static Currency getInstance(Integer code) {
return currencies.get(code);
}
}