Java.util.UnknownFormatConversionException:

  System.out.printf("%s%13s%\n", "TarrifType", "AnnualCost");
  System.out.printf("%s%d.%n", "String" 243.08);

    Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '
at java.util.Formatter.checkText(Unknown Source)
at java.util.Formatter.parse(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.io.PrintStream.format(Unknown Source)
at java.io.PrintStream.printf(Unknown Source)
at ModelComparison.main(ModelComparison.java:12)

Любая идея, что не так?

Ответ 1

Bugs..

System.out.printf("%s%13s\n", "TarrifType", "AnnualCost");
System.out.printf("%s%f\n", "String", 243.08);

http://ideone.com/USOx1

Ответ 2

Какая ошибка - это %\n в первой строке. Обратите внимание, что % является специальным символом в строке формата, указывающей, что спецификатор формата следует. \n после % не является допустимым спецификатором формата.

Если вы хотите напечатать знак процента, затем удвойте его в строке формата: %%

Если вы хотите напечатать новую строку, используйте %n, а не %\n.

Ответ 3

Проблема в вашей форматированной строке состоит в том, что вы смешивали два способа выполнения новой строки: %n и \n. Первый говорит, что форматировщик ставит новую строку в любом формате, который требуется платформе, тогда как последний ставит только буквальную новую строку char. Но то, что вы написали, было %\n, что означает, что вы ускользаете от новой строки char, и то, что взорвалось.

Вы также забыли запятую между "String" и 243.08 во втором вызове. И btw, %d форматирует целое число, поэтому вы, вероятно, не хотите его, если пытаетесь распечатать 243.08.