2010-10-22 166 views
19

下面的程序打印給出ISO 4217貨幣代碼的貨幣符號。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是輸入工作正常。對於像歐元這樣的其他輸入只返回貨幣代碼。

樣品輸入,輸出中從程序:

input: java Currency USD 
output: $ 
input: java Currency EUR 
output: EUR -> I expect the symbol of Euro here 

回答

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 € 

see also on ideone.com)。

+0

@polygenelubricats:以上作品時,我們也知道語言環境的國家。我目前只有ISO 4217貨幣鱈魚,沒有別的。我需要從貨幣代碼中找出區域設置,然後執行過程與上面的代碼類似。 – 2010-10-22 05:27:46

+0

@Eternal:你需要這樣的東西嗎? http://www.ideone.com/kjYfV – polygenelubricants 2010-10-22 05:36:46

+0

@ polygenelubricats:是非常相似,但不是打印區域設置,我只需要在該地區的貨幣符號。但這種方法有助於感謝。 – 2010-10-22 05:48:29

2

對我而言,即使在第一種情況下,您的代碼也會返回美元。它看起來,貨幣很大程度上取決於JRE版本(1.6)。 Perosnally我建議你寫你自己的CUR到符號轉換模塊 - 比試圖使用這個更容易。

-1

使用有限的Locale枚舉僅適用於西化符號。如果你想成爲一個多一點全局嘗試使用提供區域設置:

Locale[] locales = Locale.getAvailableLocales(); 

使用本地化從這個名單給了符號,而不是TLA漂亮的一致。

+0

它不起作用。它仍然只給所有其他人提供符號,它只給出貨幣代碼。歐元。 – 2016-10-06 12:21:52

0

如果有人需要輪用另一種方式(例如€ - > EUR)

String currency = €; 
String currencyCode = ""; 
for (Currency c : Currency.getAvailableCurrencies()) { 
    if (c.getSymbol().equals(currency)) { 
     currencyCode = c.toString(); 
    } 
}