javaintegerformatzero-pad

Java convert any integer to 4 digits


This seems like an easy question. One of my assignments basically sends a time in military format (like 1200, 2200, etc) to my class.

How can I force the integer to be converted to 4 digits when it's received by my class? For example if the time being sent is 300, it should be converted to 0300.

EDIT: it turns out i didnt need this for my problem as i just had to compare the values. Thanks


Solution

  • As simple as that:

    String.format("%04d", 300)
    

    For comparing hours before minutes:

    int time1 =  350;
    int time2 = 1210;
    //
    int hour1 = time1 / 100;
    int hour2 = time2 / 100;
    int comparationResult = Integer.compare(hour1, hour2);
    if (comparationResult == 0) {
        int min1 = time1 % 100;
        int min2 = time2 % 100;
        comparationResult = Integer.compare(min1, min2);
    }
    

    Note:

    Integer.compare(i1, i2) has been added in Java 1.7, for previous version you can either use Integer.valueOf(i1).compareTo(i2) or

    int comparationResult;
    if (i1 > i2) {
        comparationResult = 1;
    } else if (i1 == i2) {
        comparationResult = 0;
    } else {
        comparationResult = -1;
    }