2013-12-09 28 views
16

sitemde gösterilecek bir para birimi olarak Bitcoin eklemeye çalışıyorum. Ben döviz kurlarını ve her şeyimiz var, ama ben java.util.Currency.getInstance("BTC") her kullandığınızda bir IllegalArgumentException almaya devam. o ISO 4217 para birimi kodlarının listesine dahil değil ve ayrıca Java 7. Gerçekten sorunumu çözen bir seçenek birkaç ancak bir şey görmedim değil bu normaldi.Uygulama Bitcoin ve java.util.Currency

  1. Java platform docs göre, bir dosyayı $JAVA_HOME/lib/currency.properties oluşturarak belirli bir yerelin para birimini geçersiz kılabilir. Bu bir sorundur, çünkü bitcoin belirli bir yerel ayara bağlı değildir ve herhangi bir ülkenin para biriminin yerine kullanılmamalıdır. Çözelti Çin yerel ayarı için ikinci bir para birimi eklendi Kendi currency.data dosyasını oluşturmak için bu yüzden

  2. başka benzer bir durum, this StackOverflow Çin ikinci para birimi kodu vardı yazı, kullanılacak sunuldu. Bu daha iyidir, ancak hala bir yerel para birimine para yatırmak sorunu var.

Bu sorunla karşılaşan veya geçici bir çözüm bulmuş olan var mı? Bitcoin'in nispeten yeni olduğunu biliyorum ama fiyatları bitcoin formatında gösterebilmek harika olurdu.

+7

sen * * java.util.Currency kullanmak var mı yardımcı Umut? Sadece String'i kullanabilir veya bunun yerine kendi sınıfınızı yazabilirsiniz. – aditsu

+0

Bir kelimede, evet. Bu uygulama çok büyük ve bunun büyük bir değişiklik olması gerekmiyordu, bu nedenle yeni bir sınıf inşa etmek bu noktada buna değmez. Şimdi bitcoin ödemelerini veya bir şeyi kabul etmeye başlamış olsaydık, belki de bu gerekli olurdu. Teşekkürler! – tedski

+0

Eh, yansıma ile hack tek yön :) yansıma ile – aditsu

cevap

9

Sen ISO 4217 altında Bitcoins için para birimi kodu olarak BTC kullanamazsınız. Butan için BT is reserved. Ancak, kullanıcı tanımı için ISO 3166-1 reserves several country codes. Ek olarak, ISO 4217 lists XBT için wiki bitcoins için bir para birimi kodu (resmi olmayan, tabii ki). Maalesef

XB=XBT,000,3 

, sen 8 for the minor unit olamaz java.util.Currency için ayrıştırma sadece 0-3 küçük bir birimi işlemesi nedeniyle:

Pattern propertiesPattern = Pattern.compile("([A-Z]{3})\\s*,\\s*(\\d{3})\\s*,\\s*([0-3])"); 
+0

İlginç, Buna bakacağım. Muhtemelen şimdilik rafa gidiyoruz, ama bunun için teşekkürler! – tedski

+0

Tamam, ben senin yöntemini denedim ama currency.properties' 'dan çekmeye almak gibi olamaz. Hatta işe yarayıp yaramadığını görmek için Bhutan'ın para birimini değiştirmeyi bile denedim. Temizlemem gereken bir önbellek var mı? – tedski

+0

@tedski Bildiğim kadarıyla değil. Dosyayı doğru yere mi yerleştiriyorsunuz? "$ JAVA_HOME" ın yerini görmek için System.println (System.getProperty ("java.home")) işlevini deneyin. (Bilgisayarınızda yüklü olan birden fazla JVM'iniz olabilir veya JDK'yi kullanıyorsanız, jre' klasörünü ev olarak kullanıyor olabilirsiniz.) – Jeffrey

-3

nasıl baş edilir gibi

Locale.Builder b = new Locale.Builder(); 
b.setRegion("XB"); 
Locale xb = b.build(); 
Currency bitcoin = Currency.getInstance(xb); 

Sizin currency.properties dosya bakacağız Bitcoin para belgelerinde iyi açıklanmıştır. Bu https://en.bitcoin.it/wiki/Proper_Money_Handling_(JSON-RPC)

bir göz atın o