Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:基于ISO 4217货币代码的货币符号_Java - Fatal编程技术网

Java:基于ISO 4217货币代码的货币符号

Java:基于ISO 4217货币代码的货币符号,java,Java,下面的程序打印给定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()); } } 问题:输入字符串USD

下面的程序打印给定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());
    }
}
问题:输入字符串USD时工作正常。对于其他输入,如EUR,只需返回货币代码

样本输入,从程序输出:

input: java Currency USD 
output: $
input: java Currency EUR
output: EUR -> I expect the symbol of Euro here
返回相对于默认区域设置的货币符号

获取默认区域设置的此货币的符号。例如,对于美元,如果默认区域设置为美国,则符号为
“$”
,而对于其他区域设置,则符号可能为
“US$”
。如果无法确定符号,则返回ISO 4217货币代码

如果希望符号用于其他区域设置,请使用

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 €

()。

对我来说,即使在第一种情况下,您的代码也会返回美元。看起来,这种货币在很大程度上依赖于JRE版本(我是1.6版)。Perosnaly我建议您编写自己的CUR-to-symbol转换模块-这比尝试使用此模块要容易得多。

使用有限的语言环境enum的唯一功能来满足西化符号。如果您想更加全球化,请尝试使用以下提供的区域设置:

Locale[] locales = Locale.getAvailableLocales();

使用此列表中的区域设置给出的是符号,而不是TLA。如果有人需要,则相反(例如€->欧元)


@polygenelubricats:当我们还了解地区和国家时,上述方法有效。我目前只有ISO 4217货币cod,其他什么都没有。我需要从货币代码中找出区域设置,然后实现将类似于上述代码。@PolygeneLubricts:是的,非常类似,但我不需要打印区域设置,只需要该本地货币的货币符号。但是这种方法很有帮助,谢谢。默认Java实现的问题是它太愚蠢了。例如,如果我在美国地区显示欧元,我应该看到75欧元,而不是75欧元——美国的每个人都知道实际的欧元符号比“欧元”好得多。因此,我总是必须使用自定义代码,比如手动设置DecimalFormatSymbols,以获得外观良好的输出,而不是依赖于stock实现。这不起作用。对于所有其他货币,它仍然只给出$符号。它只给出货币代码,例如欧元。
String currency = €;
String currencyCode = "";
for (Currency c : Currency.getAvailableCurrencies()) {
    if (c.getSymbol().equals(currency)) {
        currencyCode = c.toString();
    }
}