Форматеры в Java

%b, %c, %d, %f, %s Как это работает в Java? Я пытался прочитать класс Formatter и форматируемый интерфейс, однако я не могу понять, что касается преобразований, передаваемых в качестве аргументов.

Например:

System.out.printf("%f not equals %b", Math.PI, Math.E)

Несмотря на то, что форматирование, такое как%b, %c, %d, %f, %s, ограничено в экзамене ocjp6, это похоже на огромную тему для подготовки

2 ответа

Решение

Я думаю, у вас возникли проблемы с пониманием того, как работает System.out.printf(). Это очень просто, как только вы получите идею.

Ваш оригинальный вопрос касался ниже

System.out.printf("%f not equals %b", Math.PI, Math.E)

Здесь System.out.printf пытается вывести строку. %f и%b можно понимать как заполнители с особым значением.

Заполнители, потому что они будут заменены данными, которые идут после запятой. В этом случае% f заменяется значением Math.PI, а%b заменяется значением Math.E

Особое значение, потому что каждый форматтер обозначает что-то, например, как упомянуто выше

%b is for Boolean
%f is for Decimal floating-point
%c is for Character
%d is for Decimal integer
%s is for String

Теперь написать ваш оригинальный запрос в простой форме

System.out.printf("%f is not equals to %b", 3.14, true);

Здесь%f (имеется в виду десятичное число с плавающей запятой) заменяется значением с плавающей запятой 3.14, а%b заменяется значением "true".

если вы переключите% F и% B в приведенном выше, как

System.out.printf("%b is not equal to %f", 3.14, true); //error
 because "true" (boolean)value is not compatible with %f

Но это будет работать

System.out.printf("%b is not equal to %f", 3.14, 3.14); // будет работать, потому что 3.14 будет иметь значение true. Выше работает из-за некоторого автоматического преобразования типов с помощью Java. Но вы можете рассмотреть это позже.

Теперь по поводу вашего последнего вопроса, что происходит в

System.out.println("%+04.2f",12.6542); ?

Я предполагаю, что вы имели в виду printf.

Теперь все форматеры и их пояснения присутствуют в ссылке

http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

Это может выглядеть пугающе. но это довольно просто.

Lets figure out what %+04.2f stands for from the above link 

'+' Requires the output to include a positive sign for all positive numbers. 
    If this flag is not given  only negative values will include sign.

'0' Requires the output to be padded with leading zeros to the minimum field width following any sign. Called zero padding  

4.2 indicates that a floating point number is displayed in a total of 4 character spaces, including 2 digits after the decimal.
    that means 22.5555 will be shown as 22.55(total 4 char and two after space) 
    Read Width and precision in the link given above.

f   floating point  The result is formatted as a decimal number

Итак, в основном то, что означает%+04.2f, показывает положительный знак для всех положительных чисел. Число должно содержать всего 4 символа и два после десятичной. Он должен быть отформатирован как число с плавающей точкой.

Больше примеров

       System.out.printf("  %04.2f",12.6542);   output ==> 12.65
       System.out.printf("  %+04.2f",12.6542);  output ==> +12.65(plus sign here bcoz we gave +)
       System.out.printf("  %+04.2f",-12.6542); output ==> -12.65

       System.out.printf("  %02d",1);   output ==> 1 
       System.out.printf("  %02d",1);   output ==> 01 (bcoz of 02d) 
       System.out.printf("  %03d",1);   output ==> 001 (bcoz of 03d)


       System.out.printf("  %+04.2f",22.2);     output ==> +22.20
       System.out.printf("  %+04.2f",2222.125); output ==> +2222.13 
       (left side of decimal is never truncated . so all chars shows ie total 6 chars even though only 4 asked 

       System.out.printf("  %+04.0f",2222.125); output ==> +2222 (bcoz zero chars requested after decimal point) 

Пожалуйста, перейдите по ссылкам ниже. Это поможет вам легче понять концепцию

http://www.homeandlearn.co.uk/java/java_formatted_strings.html

https://answers.yahoo.com/question/index?qid=20101017181211AAbtWC0

https://docs.oracle.com/javase/tutorial/java/data/numberformat.html

http://alvinalexander.com/programming/printf-format-cheat-sheet

%b is for Boolean
%f is for Decimal floating-point
%c is for Character
%d is for Decimal integer
%s is for String

Вы можете проверить эту ссылку. Также Oracle документы объясняет это в деталях.

Другие вопросы по тегам