2010-10-22 22 views
19

Sotto il programma viene stampato il simbolo di valuta dato il codice di valuta ISO 4217.Java: simbolo di valuta basato su codice valuta ISO 4217 cod

import java.util.*; 

public class Currency{ 

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

Problema: funziona bene quando la stringa di USD è in ingresso. Per altri ingressi come EUR basta restituire il codice valuta.

ingresso del campione, ouput dal programma:

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

risposta

25

Currency.getSymbol() restituisce il simbolo di valuta relativa alle impostazioni internazionali di default.

Ottiene il simbolo di questa valuta per le impostazioni internazionali predefinite. Ad esempio, per il dollaro USA, il simbolo è "$" se le impostazioni internazionali predefinite sono gli Stati Uniti, mentre per altre impostazioni internazionali può essere "US$". Se non è possibile determinare alcun simbolo, viene restituito il codice valuta ISO 4217.

Utilizzare Currency.getSymbol(Locale locale) se si desidera il simbolo per un diverso 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: I lavori di cui sopra, quando sappiamo anche il paese locale. Al momento ho solo il codice valuta ISO 4217 e nient'altro. Ho bisogno di capire le impostazioni locali dal codice valuta e quindi l'implementazione sarebbe simile al codice precedente. –

+0

@Eternal: hai bisogno di qualcosa del genere? http://www.ideone.com/kjYfV – polygenelubricants

+0

@polygenelubricats: Sì, molto simile, ma invece di stampare Locale, ho solo bisogno del simbolo della valuta in quel locale. Ma questo approccio aiuta grazie. –

2

Per me, il codice anche nel primo caso restituisce USD. Sembra che la valuta dipenda molto dalla versione di JRE (1.6 per me). Perosnalmente ti consiglio di scrivere il tuo CUR sul modulo di conversione dei simboli - sarà molto più semplice, piuttosto che provare a usare questo.

-1

L'utilizzo delle limitate impostazioni di enum per i simboli occidentalizzati. Se si vuole essere un po 'più globale provare a utilizzare versioni locali forniti da:

Locale[] locales = Locale.getAvailableLocales(); 

Utilizzando versioni locali in questa lista non ha dato i simboli piuttosto che TLA di abbastanza costantemente.

+0

Non funziona. Fornisce ancora solo $ simbolo per tutti gli altri, fornisce solo codici valuta, ad es. EURO. –

0

Se qualcuno ha bisogno è il contrario (ad esempio € -> EUR)

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