2015-12-03 6 views
1

Предположим, что у меня есть следующий код:Java: печать двойной - Println или Printf

double median = med(10.0, 12.0, 3.0); //method returns middle number as double 

Теперь я хочу, чтобы написать сообщение о том, медиану. Может ли это быть сделано с помощью Println(), как в следующем:

System.out.println("Your number was " + median); 

Или я должен использовать Е() с двойными значениями?

Я спрашиваю, потому что я видел, как практики онлайн 1, но когда я пытаюсь с помощью Println() я получаю сообщение об ошибке, если я не пишу:

System.out.println(median); 

Таким образом, вы можете использовать println() распечатать double значения и строки, или вы должны использовать printf() для этой цели?

+3

Я не получаю сообщение об ошибке при написании "System.out.println (" Ваш номер был "+ медиана);" Это действительно порождает ошибку для вас? если да, то какой? – ParkerHalo

+2

Возможный дубликат [Есть ли веская причина использовать «printf» вместо «print» в java?] (Http://stackoverflow.com/questions/548249/is-there-a-good-reason-to-use -printf-in-print-in-java) – Fawzan

ответ

3

Метод printf может быть особенно полезен при отображении нескольких переменных в одной строке, которая была бы утомительно с помощью конкатенации:
The println(), который может ввести в заблуждение во время. (Хотя оба варианта можно использовать практически во всех случаях).

double a = 10; 
double b = 20; 

System.out.println("a: " + a + " b: " + b);// Tedious string concatenation. 

System.out.printf("a: %f b: %f\n", a, b);// Output using string formatting. 

Выход:

a: 10.0 b: 20.0 
a: 10,000000 b: 20,000000 
0

You can do both (если System.out.println("Your number was " + median); не работает, у вас что-то еще не так. Покажите нам трассировку стека). printf позволяет вам еще formatting options (например, количество знаков после запятой) без использования DecimalFormat, но это выбор по стилю, а не что-либо еще.

Лично я нахожу последовательность конкатенации более легкой на глазах и легче поддерживать. %blah теряется в строке, ошибки в конкатенации строк - это ошибка времени компиляции, и добавление новой переменной требует меньше размышлений. Однако я в меньшинстве.

Профи в printf - это то, что вам не нужно создавать кучу форматировщиков, другие находят свой формат более легким на глазах, а при использовании метода printf, предоставляемого каркасом ведения журнала, строковое построение происходит только в случае необходимости ,

double value = 0.5; 
System.out.println("value: " + value); 
System.out.printf("value: %f", value); 

Если вы хотите set a number of decimal places:

double value = 0.5; 
    // String concatenation 
    DecimalFormat df = new DecimalFormat("0.000"); 
    System.out.println("value: " + df.format(value)); 

    // printf 
    System.out.printf("value: %.3f", value); 
+0

Зачем голосовать? –

Смежные вопросы