2010-10-22 18 views
19

पर आधारित मुद्रा प्रतीक कार्यक्रम के नीचे आईएसओ 4217 मुद्रा कोड दिए गए मुद्रा प्रतीक को प्रिंट करता है।जावा: आईएसओ 4217 मुद्रा कोड

import java.util.*; 

public class Currency{ 

    public static void main(String args[]) { 
     Currency myInstance = Currency.getInstance(args[0]); 
     System.out.println(myInstance.getSymbol()); 
    } 
} 

समस्या: ठीक काम करता है जब स्ट्रिंग डालर इनपुट है। यूरो जैसे अन्य इनपुट के लिए बस मुद्रा कोड वापस करें।

नमूना इनपुट, कार्यक्रम से ouput:

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

उत्तर

25

Currency.getSymbol() रिटर्न सामान्य स्थान के लिए मुद्रा प्रतीक रिश्तेदार।

डिफ़ॉल्ट लोकेल के लिए इस मुद्रा का प्रतीक प्राप्त करता है। उदाहरण के लिए, यूएस डॉलर के लिए, प्रतीक "$" है यदि डिफ़ॉल्ट लोकेल यूएस है, जबकि अन्य स्थानीय लोगों के लिए यह "US$" हो सकता है। यदि कोई प्रतीक निर्धारित नहीं किया जा सकता है, तो आईएसओ 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: ऊपर काम करता है जब हम भी स्थान देश जानते हैं। वर्तमान में मेरे पास केवल आईएसओ 4217 मुद्रा कोड है और कुछ और नहीं है। मुझे मुद्रा कोड से लोकेल को समझने की आवश्यकता है और फिर कार्यान्वयन उपरोक्त कोड के समान होगा। –

+0

@ अनंत: क्या आपको ऐसा कुछ चाहिए? http://www.ideone.com/kjYfV – polygenelubricants

+0

@ पोलिजेनेलब्रिकैट्स: हाँ बहुत समान है, लेकिन लोकेल प्रिंट करने की बजाय, मुझे उस स्थानीय मुद्रा में मुद्रा के प्रतीक की आवश्यकता है। लेकिन यह दृष्टिकोण धन्यवाद में मदद करता है। –

2

मेरे लिए, आपका कोड पहले मामले में भी USD लौटाता है। ऐसा लगता है कि मुद्रा भारी जेआरई संस्करण (मेरे लिए 1.6) पर निर्भर करती है। मौलिक रूप से मैं आपको अपने स्वयं के सीयूआर को रूपांतरण रूपांतरण मॉड्यूल लिखने की सलाह देता हूं - इसका उपयोग करने की कोशिश करने से यह बहुत आसान होगा।

-1

सीमित लोकेल एनम का उपयोग पश्चिमीकृत प्रतीकों के लिए केवल एक ही प्रदान करता है। आप होना चाहते हैं थोड़ा और वैश्विक द्वारा प्रदान स्थलों का उपयोग करके देखें:

Locale[] locales = Locale.getAvailableLocales(); 

स्थलों का प्रयोग से इस सूची को बहुत लगातार बजाय प्रतीकों TLA के दे दी है।

+0

यह काम नहीं करता है। यह अभी भी अन्य सभी के लिए केवल $ प्रतीक देता है जो केवल मुद्रा कोड देता है उदा। ईयूआर। –

0

किसी को इसका उल्टा की जरूरत है (उदाहरण के लिए € -> EUR)

String currency = €; 
String currencyCode = ""; 
for (Currency c : Currency.getAvailableCurrencies()) { 
    if (c.getSymbol().equals(currency)) { 
     currencyCode = c.toString(); 
    } 
} 
संबंधित मुद्दे