Kunal Kunal - 4 months ago 39
Java Question

Changing the format specifier in the printf() method results in IllegalFormatFlagsException

In the following code, after changing the format specifier in the

method from
, and running the code results in

Exception in thread "main" java.util.IllegalFormatFlagsException:

Flags = '-0'.

The complete source code is as follows:

public class MinArray {

public static void main(String[] args) {

byte[] storeMinimum = new byte[5];
byte[] trialArray = new byte[15];

for(byte bt=0; bt < storeMinimum.length; bt++){
storeMinimum[bt] = findMinimum(trialArray);

for (byte minValue : storeMinimum)
System.out.printf("%0-4d%n", minValue);


private static byte findMinimum(byte[] valArray) {
byte minValue = valArray[0];

for(byte bt=0; bt < valArray.length; bt++)
minValue = (byte) Math.min(minValue, valArray[bt]);

return minValue;

private static void randomize(byte[] valArray) {
for (byte bt = 0; bt < valArray.length; bt++)
valArray[bt] = (byte) (Math.random()*128);


Can someone explain, how this could have happened, since I wanted the byte literal to be displayed as left-justified with 4 character positions? Also, please do suggest a fix for the same.


I think when you write

System.out.printf("%04d%n", minValue);

It's right-justified. All the empty space in left will replaced by '0'.

The '-' is used for left-justified.

They can't be used together.