Использование Javas System.out.format для выравнивания целочисленных значений - PullRequest
1 голос
/ 21 ноября 2011

Я пытаюсь получить выровненные по правому краю числа, похожие на это:

  12345
   2345

, но я явно не понимаю синтаксис.Я пытался следовать этим инструкциям .и придумайте следующую попытку (это целые числа, поэтому d и я хочу ширину 7 и 0 десятичных дробей):

public class test {

    public static void main( String[] args ) {
        System.out.format("%7.0d%n", 12345);
        System.out.format("%7.0d%n",  2345);
    }
}

, но независимо от того, что я делаю, мне кажется, что я получаю IllegalFormatPrecisionExceptionЕсть ли способ сделать это с помощью этого инструмента?Если нет, то как бы ты это сделал?

Ответы [ 4 ]

3 голосов
/ 21 ноября 2011

Вы можете сделать что-то вроде этого:

public class Test {
    public static void main( String[] args ) {
        System.out.format("%7d%n", 12345);
        System.out.format("%7d%n",  2345);
    }
}

По сути, этот код просит Java дополнить строку пробелами так, чтобы на выходе было ровно 7 символов.

1 голос
/ 21 ноября 2011

На связанной странице показано это:

System.out.format("%,8d%n", n); // --> " 461,012"

Вы можете опустить запятую и изменить 8 на 7

1 голос
/ 21 ноября 2011

Сделай так:

public class test {

    public static void main( String[] args ) {
        System.out.format("%7d%n", 12345);
        System.out.format("%7d%n",  2345);
    }
}
0 голосов
/ 25 апреля 2013

конвертер% d для целых чисел и% f для чисел с плавающей запятой.«% 7.0d% n» используется с плавающей точкой (то есть как% 7.0f% n), а «% 7d% n» используется для целочисленного представления. Это является причиной исключения IllegalFormatPrecisionException.

ссылка http://docs.oracle.com/javase/tutorial/java/data/numberformat.html

...