2014-11-04 172 views
3

我有一個ISO 4217的數字貨幣代碼:840轉換成ISO 4217的數字貨幣代碼貨幣名稱

我想要得到的貨幣名稱:美元

我試圖做到這一點:

Currency curr1 = Currency.getInstance(「840」);

但我不斷收到java.lang.IllegalArgumentException異常

如何解決?有任何想法嗎?

+0

您必須提供'Locale'。 – Hannes 2014-11-04 12:04:35

+0

我還可以提供一個字符串:getInstance(String currencyCode) 返回給定貨幣代碼的Currency實例。 – 2014-11-04 12:12:50

+0

我可以從數字代碼中獲取語言環境嗎? – 2014-11-04 12:13:19

回答

2

java.util.Currency.getInstance僅支持ISO 4217貨幣代碼,而非貨幣編號。但是,您可以使用getAvailableCurrencies方法檢索所有幣種,然後通過比較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"); 
} 
0

你必須提供如 「USD」 的代碼,然後將返回的Currency對象。如果您使用的是JDK 7,那麼您可以使用以下代碼。 JDK 7有一個方法getAvailableCurrencies()

public static Currency getCurrencyByCode(int code) { 
    for(Currency currency : Currency.getAvailableCurrencies()) { 
     if(currency.getNumericCode() == code) { 
      return currency; 
     } 
    } 
    throw new IllegalArgumentException("Unkown currency code: " + code); 
}