Java Format Argument Index

In this chapter you will learn:

  1. What is Argument Index
  2. Syntax for Argument Index
  3. Example - Argument Index
  4. Example - Argument indexes enable you to reuse an argument without having to specify it twice
  5. Example - Relative index
  6. Example - Relative indexes are especially useful when creating custom time and date formats

Description

Normally, format specifiers and arguments are matched in order, from left to right.

However, by using an argument index you can explicitly control which argument a format specifier matches.

An argument index immediately follows the % in a format specifier: n$, where n is the index of the desired argument, beginning with 1.

Syntax

fmt.format("%3$d %1$d %2$d", 10, 20, 30);

Example


import java.util.Formatter;
//from  w w  w.ja  va2 s  . com
public class Main {
  public static void main(String args[]) {
    Formatter fmt = new Formatter();

    fmt.format("%3$d %1$d %2$d", 10, 20, 30);
    System.out.println(fmt);

  }
}

The code above generates the following result.

Example 2

Argument indexes enable you to reuse an argument without having to specify it twice.


import java.util.Formatter;
//from w  w w .  j a  va  2 s .co  m
public class Main {
  public static void main(String args[]) {
    Formatter fmt = new Formatter();

    fmt.format("%d in hex is %1$x", 255);
    System.out.println(fmt);

  }
}

The code above generates the following result.

Example 3

Relative index enables you to reuse the argument matched by the preceding format specifier.

Simply specify < for the argument index.


import java.util.Formatter;
//from   www  .ja v  a2s .  com
public class Main {
  public static void main(String args[]) {
    Formatter fmt = new Formatter();

    fmt.format("%d in hex is %<x", 255);
    System.out.println(fmt);

  }

}

The code above generates the following result.

Example 4

Relative indexes are especially useful when creating custom time and date formats.

Because of relative indexing, the argument cal need only be passed once, rather than three times.


import java.util.Calendar;
import java.util.Formatter;
/* w  w  w .ja  v a2  s.com*/
public class Main {
  public static void main(String args[]) {
    Formatter fmt = new Formatter();
    Calendar cal = Calendar.getInstance();

    fmt.format("Today is day %te of %<tB, %<tY", cal);
    System.out.println(fmt);
  }
}

The code above generates the following result.

Today is day 1 of December, 2006

The code above generates the following result.

Next chapter...

What you will learn in the next chapter:

  1. What specifiers to use to format time and date
  2. Format List
  3. Example - How to show month by name and number
  4. Example - How to display standard 12-hour time format
  5. Example - How to display complete time and date information
  6. How to just display hour and minute
  7. How to display day of month as a decimal
Home »
  Java Tutorial »
    Java Langauge »
      Java Data Format
Java Formatter Class
Java Format Specifier
Java Format Specifier Uppercase
Java Format Precision
Java Format Flags
Java Format Justifying Output
Java Format Negative and Positive
Java Format Line up Space
Java Format Parentheses
Java Format Zero Padding
Java Format Comma
Java Format Alternate Conversion
Java Format Argument Index
Java Format date time
Java Format Date