Formatted output in Java

Sometimes in Competitive programming, it is essential to print the output in a given specified format. Most users are familiar with printf function in C. Let us see discuss how we can format the output in Java:

Formatting output using System.out.printf()

This is the easiest of all methods as this is similar to printf in C. Note that System.out.print() and System.out.println() take a single argument, but printf() may take multiple arguments.

// A Java program to demonstrate working of printf() in Java
class JavaFormatter1
  public static void main(String args[])
    int x = 100;
    System.out.printf("Printing simple integer: x = %d ", x);
    // this will print it upto 2 decimal places
    System.out.printf("Formatted with precison: PI = %.2f ", Math.PI);
    float n = 5.2f;
    // automatically appends zero to the rightmost part of decimal
    System.out.printf("Formatted to specific width: n = %.4f ", n);
    n = 2324435.3f;
    // here number is formatted from right margin and occupies a
    // width of 20 characters
    System.out.printf("Formatted to right margin: n = %20.4f ", n);


Printing simple integer: x = 100
Formatted with precison: PI = 3.14
Formatted to specific width: n = 5.2000
Formatted to right margin: n =         2324435.2500

System.out.format() is equivalent to printf() and can also be used.


Formatting using DecimalFormat class:

DecimalFormat is used to format decimal numbers.

// Java program to demonstrate working of DecimalFormat
import java.text.DecimalFormat;
class JavaFormatter2
  public static void main(String args[])
    double num = 123.4567;
    // prints only numeric part of a floating number
    DecimalFormat ft = new DecimalFormat("####");
    System.out.println("Without fraction part: num = " + ft.format(num));
    // this will print it upto 2 decimal places
    ft = new DecimalFormat("#.##");
    System.out.println("Formatted to Give precison: num = " + ft.format(num));
    // automatically appends zero to the rightmost part of decimal
    // instead of #,we use digit 0
    ft = new DecimalFormat("#.000000");
    System.out.println("appended zeroes to right: num = " + ft.format(num));
    // automatically appends zero to the leftmost of decimal number
    // instead of #,we use digit 0
    ft = new DecimalFormat("00000.00");
    System.out.println("formatting Numeric part : num = "+ft.format(num));
    // formatting money in dollars
    double income = 23456.789;
    ft = new DecimalFormat("$###,###.##");
    System.out.println("your Formatted Dream Income : " + ft.format(income));


Without fraction part: num = 123
Formatted to Give precison: num = 123.46
appended zeroes to right: num = 123.456700
formatting Numeric part : num = 00123.46
your Formatted Dream Income : $23,456.79

Formatting dates and parsing using SimpleDateFormat class:

This class is present in java.text package.

// Java program to demonstrate working of SimpleDateFormat
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
class Formatter3
  public static void main(String args[]) throws ParseException
    // Formatting as per given pattern in the argument
    SimpleDateFormat ft = new SimpleDateFormat("dd-MM-yyyy");
    String str = ft.format(new Date());
    System.out.println("Formatted Date : " + str);
    // parsing a given String
    str = "02/18/1995";
    ft = new SimpleDateFormat("MM/dd/yyyy");
    Date date = ft.parse(str);
    // this will print the date as per parsed string
    System.out.println("Parsed Date : " + date);


Formatted Date : 09-08-2018
Parsed Date : Sat Feb 18 00:00:00 UTC 1995


Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

This article is attributed to GeeksforGeeks.org

leave a comment



load comments

Subscribe to Our Newsletter