Java - Почему я получаю исключение UnknownFormatConversionException? - PullRequest
0 голосов
/ 28 ноября 2018

Всякий раз, когда я пытаюсь выполнить эту строку:

System.out.printf("%14s %-*.2f\n", "Minimum Range:", minRange); // minRange is a double

Я получаю эту ошибку:

java.util.UnknownFormatConversionException: Conversion = '-'

Я не могу найти что-то не так с моим утверждением.Если я не ошибаюсь, %-*.2f должно работать нормально.

Почему это не так?

Какя могу указать неограниченное поле, которое допускает два десятичных знака?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Для вашего комментария вы хотите напечатать число неограниченной длины и разрешить использовать только две цифры после десятичной точки.

Для этого вам не нужно использовать - *.

Ваш ответ будет следующим:

System.out.printf("%14s %.2f\n", "Minimum Range:", minRange);

Использование флага - (минус) означает, что вы хотите выровнять свое значение влево.Когда вы используете этот флаг, вы должны указать ширину блока, в котором вы хотите выровнять текст. В вашем случае вы указываете ширину *, которая недопустима.

0 голосов
/ 28 ноября 2018

Я понятия не имею, почему вы думаете, что "- *" являются допустимыми флагами, но правильный синтаксис формата должен быть (обратите внимание также на %n для перевода строки для конкретной платформы):

System.out.printf("%14s %0.2f%n", "Minimum Range:", minRange); // minRange is a double

Что равно (потому что строковая переменная имеет ровно 14 символов):

System.out.printf("%s %0.2f%n", "Minimum Range:", minRange);

Что опять равно (и намного проще для чтения):

System.out.printf("Minimum Range: %.2f%n", minRange);

См. https://docs.oracle.com/javase/10/docs/api/java/util/Formatter.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...