13

私はちょうど手を試していますjava.util.Currencyが、いくつかの通貨コードでは私を投げますjava.lang.IllegalArgumentException

これは私の簡単なコードです

java.util.Currency c = java.util.Currency.getInstance(code);

Javaドキュメントに従って

public static Currency getInstance(String currencyCode)

Returns the Currency instance for the given currency code.

Parameters:
    currencyCode - the ISO 4217 code of the currency 
Returns:
    the Currency instance for the given currency code 
Throws:
    NullPointerException - if currencyCode is null 
    IllegalArgumentException - if currencyCode is not a supported ISO 4217 code.

いくつかのコードでこの例外が発生していますが、そのうちのいくつかは

  1. ウイー
  2. COU
  3. TMT

ISO_4217 に従って、上記のすべてのコードは公式の ISO 4217 通貨名です。この場合、なぜこの例外が発生するのかわかりません。正しい値を取得するために、何か他のことをする必要がありますか、それとも他の情報を JVM に渡す必要がありますか? 私の混乱を解消するための助けは本当にかなりの価値があるか、ISO 4217リストの上記のコードを見ることができるので、Javaドキュメントが指しているISO 4217通貨を指摘することができるので、間違ったドキュメント/参照を見ている可能性があります。

より多くの洞察を提供するために、ここにスタックトレースがあります

Exception in thread "main" java.lang.IllegalArgumentException
    at java.util.Currency.getInstance(Unknown Source)
    at java.util.Currency.getInstance(Unknown Source)
    at CurrencyTest1.main(CurrencyTest1.java:10)

および Java バージョン

java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) 64-Bit Server VM (build 17.0-b17, mixed mode)
4

3 に答える 3

6

これは興味深い問題です。

COU と UYI はどちらも実際の通貨ではありません。COU は古いベネズエラの通貨 (現在は使用されていません) であり、UYI はインデックス通貨であり、おそらく銀行が為替レートを整理するために使用しています。

Java 1.7.0_u7 では、通貨TMTは正常に機能します。TMT は 2009 年に導入されたので、Java 6 がそのコードを認識しないのは理にかなっています。

于 2012-10-06T17:17:35.147 に答える
1

ウルグアイUYUは正常に機能してUYIおり、COP代わりにCOUコロンビアTMTも機能していません。

于 2012-10-06T17:09:25.223 に答える
0

編集:私にとってこれはうまくいきます:

 Currency curr = java.util.Currency.getInstance("UYU");
 System.out.println("Currency code:" + curr.getCurrencyCode());

UYIISO 4217 標準にはありません。リストは次のとおりです: http://www.xe.com/iso4217.php

于 2012-10-06T17:09:19.267 に答える