DecimalFormat неправильно обрабатывает номер. Зачем? - PullRequest
0 голосов
/ 09 мая 2020

В настоящее время я создаю базовое c Java приложение, которое позволяет анализировать предоставленное число в форматированную строку.
Проблема, с которой я столкнулся прямо сейчас, заключается в том, что DecimalFormat форматирует предоставленное значение в неправильном формате.

Пример:

private final DecimalFormat format = new DecimalFormat();

public static void main(String[] args){
    int number;
    try{
        number = Integer.parseInt(args[0]);
    }catch(NumberFormatException ex){
        System.out.println("The provided value was invalid!");
        System.exit(0);
        return;
    }

    format.applyPattern("#,###,###.##");

    return format.format(number);
    System.exit(0);
}

Проблема, с которой я столкнулся, заключается в том, что если я, например, предоставлю число 123456789 в качестве первого аргумента в команде jar, вернет ли оно 123'456'789 а не желаемый результат 123,456,789.

Что может вызвать эту проблему?

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Я вижу здесь проблему в том, что вы возвращаете Integer вместо void в возврате. Кроме того, вы получаете доступ к нестатической c функции format из статической c функции. Вы можете переместить это в свою функцию или использовать в качестве переменной c.

private static DecimalFormat format = new DecimalFormat();

public static void main(String[] args){
    int number;
    try{
        number = Integer.parseInt(args[0]);
    }catch(NumberFormatException ex){
        System.out.println("The provided value was invalid!");
        System.exit(0);
        return;
    }

    format.applyPattern("#,###,###.##");

    System.out.println(format.format(number));
    System.exit(0);
}

Если вышеперечисленное не сработает, есть большая вероятность, что это исходит из вашей локали. Вы можете принудительно установить локаль, используя этот ответ

0 голосов
/ 09 мая 2020

С импортом java.text.DecimalFormat и этим кодом:

private static final DecimalFormat format = new DecimalFormat();

    public static void main(String[] args) {
        int number = 1456781;

        format.applyPattern("#,###,###.##");

        System.out.println("The formatted version is -> " + format.format(number));
    }

я получаю

The formatted version is -> 1,456,781

Process finished with exit code 0

Значит, он правильно отформатировал?

...