java.util.Currency

dngfng

Aktives Mitglied
Wie der Titel schon sage spiele bzw. evaluiere ich gerade java.util.Currency, vom Prinzip her passt diese genau in mein Konzept um Währungen zu handhaben. Allerdings finde ich die default Locale Abhängigkeit von dem zurückgegeben Währungssymbol doch etwas dürftig.

Ob und welches Symbol zurückgegeben wird hängt vom Default Local ab, soweit so gut.

Java:
public static void main(String args[]) {
		
		Locale.setDefault(new Locale(args[0],args[1]));
		
		String[]countries = Locale.getISOCountries();
		
		for(String country : countries) {
						
			Currency currency = Currency.getInstance(new Locale(country,country));
			
			if(currency!=null)
			System.out.println(country + " " +currency.getCurrencyCode() + " " + currency.getSymbol());
		}
	}

Leider habe ich feststellen müssen das die meisten Locale so gut wie keine Symbol zurück liefern, sondern auf ISO 4217 Currency Code zurückfallen.

Bei de_de liefert ausschliesslich das Symbol € für Euro Länder soweit richtig. Nur hätte ich doch recht gerne das wenn ich explizit nach einen Währungsymbol frage auch diese bekommen.

Sicherlich ist dies kein Bug und hat auch seinen Sinn da einige Währungssymbol nicht eindeutig sind.
Habt Ihr eine Idee wie ich Currency außer durch Default Locale murxerei dazu bewegen könnte mir unabhängig vom Default Locale das gewünschte Symbol zu liefern?


Update:
Java:
currency.getSymbol(new Locale(country,country)

Dies scheint mir die nächst beste Lösung, falls jemand eine besser Idee hat oder sonstige Einblicke bitte melden, da mir auch dieser Ansatz nicht für alle Währungen die gewünschten Symbole liefert (zbs. Symbol Yen fehlt).
 
Zuletzt bearbeitet:
Der zweite Parameter von Locale(language, country) sollte nicht mit "language" belegt werden. Wenn das Land nicht bekannt ist, ist es besser, den Konstruktor Locale(language) zu benutzen.
 
Der zweite Parameter von Locale(language, country) sollte nicht mit "language" belegt werden. Wenn das Land nicht bekannt ist, ist es besser, den Konstruktor Locale(language) zu benutzen.

Das Problem hierbei ist allerdings das sich Currency darauf verlässt das eine country angegeben ist, da diese abgefragt wird.

Außerdem ist enthalten habe ich denn Country Code und nicht denn Lang Code. Ich hatte bereits versucht language mit null zu belegen dies wird leider nicht akzeptiert.

Java:
String[]countries = Locale.getISOCountries();
 

Zurück
Oben