NumberFormat.getCurrencyInstance () не возвращает символ валюты для локалей КИТАЙ и ФРАНЦИЯ (jdk-1.8) - PullRequest
0 голосов
/ 07 февраля 2019

Я написал программу для возврата двойных значений с символами валюты некоторых стран.Для этого я использую getCurrencyInstance() метод, чтобы получить символ конкретной страны.

Проблема специфична для моего ноутбука JDK-1.8 и отлично работает на онлайн-компиляторе.Проблема, с которой я сталкиваюсь, состоит в том, что символ валюты для КИТАЙ и ФРАНЦИЯ обозначен знаком??.Но для INDIA и US отображаются правильные символы.

Сейчас я немного работаю над этой проблемой.Следовательно, любые выводы будут полезны.

Вот мой код:

import java.util.Scanner;
import java.text.NumberFormat;
import java.util.Locale;

public class Solution {

public static void main(String[] args) {
    /* Read input */
    Scanner scanner = new Scanner(System.in);
    double payment = scanner.nextDouble();
    scanner.close();

    /* Create custom Locale for India.
    Locale indiaLocale = new Locale("en", "IN");

    /* Create NumberFormats using Locales */
    NumberFormat us     = NumberFormat.getCurrencyInstance(Locale.US);
    NumberFormat india  = NumberFormat.getCurrencyInstance(indiaLocale);
    NumberFormat china  = NumberFormat.getCurrencyInstance(Locale.CHINA);
    NumberFormat france = NumberFormat.getCurrencyInstance(Locale.FRANCE);

    /* Print output */        
    System.out.println("US: "     + us.format(payment));
    System.out.println("India: "  + india.format(payment));
    System.out.println("China: "  + china.format(payment));
    System.out.println("France: " + france.format(payment));
}
}

Соответствующий вывод на моей машине:

12324.134
US: $12,324.13
India: Rs.12,324.13
China: ?12,324.13
France: 12 324,13 ?

1 Ответ

0 голосов
/ 21 марта 2019

для Китая используйте этот код.Класс getCurrency (). GetSymbol (locale) класса Numberformat возвращает символ валюты для определенного региона.System.out.println("China: " + china.getCurrency().getSymbol(Locale.CHINA) + china.format(payment));

Для Франции используйте это System.out.println("France: " + france.format(payment) + " " + france.getCurrency().getSymbol(Locale.FRANCE));

...