2010-10-22 81 views
19

Dưới đây chương trình in biểu tượng Tiền tệ được cung cấp mã tiền tệ theo ISO 4217.Java: Ký hiệu tiền tệ dựa trên mã số tiền tệ 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()); 
    } 
} 

Vấn đề: Hoạt động tốt khi chuỗi USD được nhập. Đối với các yếu tố đầu vào khác như EUR, chỉ cần trả lại Mã tiền tệ.

đầu vào mẫu, ouput từ chương trình:

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

Trả lời

25

Currency.getSymbol() trả về ký hiệu tiền tệ tương đối so với miền địa phương mặc định.

Lấy ký hiệu của đơn vị tiền tệ này cho ngôn ngữ mặc định. Ví dụ: đối với Đô la Mỹ, ký hiệu là "$" nếu ngôn ngữ mặc định là Hoa Kỳ, trong khi các ngôn ngữ khác có thể là "US$". Nếu không thể xác định biểu tượng nào, mã tiền tệ theo ISO 4217 sẽ được trả lại.

Sử dụng Currency.getSymbol(Locale locale) nếu bạn muốn ký hiệu cho một ngôn ngữ khác.

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: Các công trình trên khi chúng ta cũng biết nước locale. Tôi hiện chỉ có mã số tiền tệ theo tiêu chuẩn ISO 4217 và không có gì khác. Tôi cần phải tìm ra ngôn ngữ từ mã tiền tệ và sau đó việc thực hiện sẽ tương tự như mã trên. –

+0

@Eternal: bạn có cần thứ gì đó như thế này không? http://www.ideone.com/kjYfV – polygenelubricants

+0

@polygenelubricats: Vâng rất giống nhau, nhưng thay vì in ấn Locale, tôi chỉ cần ký hiệu tiền tệ ở địa phương đó. Nhưng cách tiếp cận này giúp cảm ơn. –

2

Đối với tôi, mã của bạn ngay cả trong trường hợp đầu tiên trả về USD. Dường như, tiền tệ phụ thuộc nhiều vào phiên bản JRE (1.6 cho tôi). Perosnally tôi khuyên bạn nên viết CUR của riêng bạn để mô-đun chuyển đổi biểu tượng - nó sẽ dễ dàng hơn nhiều, hơn là cố gắng sử dụng này.

-1

Sử dụng giới hạn chỉ dành cho những người phục vụ miền địa phương có giới hạn cho các ký hiệu phương Tây. Nếu bạn muốn thử nghiệm toàn cầu hơn một chút bằng Locales do:

Locale[] locales = Locale.getAvailableLocales(); 

Sử dụng Locales từ danh sách này cho các biểu tượng chứ không phải là TLA.

+0

Nó không hoạt động. Nó vẫn chỉ cung cấp biểu tượng $ cho tất cả những người khác, nó chỉ cung cấp mã tiền tệ, ví dụ: EUR. –

0

Nếu ai đó cần nó theo chiều ngược lại (ví dụ € -> EUR)

String currency = €; 
String currencyCode = ""; 
for (Currency c : Currency.getAvailableCurrencies()) { 
    if (c.getSymbol().equals(currency)) { 
     currencyCode = c.toString(); 
    } 
} 
Các vấn đề liên quan