lakemalcom lakemalcom - 4 months ago 12
Java Question

Is there a library or utility in Java to convert an integer to its ordinal?

I want to take an integer and get its ordinal, i.e.:

1 -> "First"
2 -> "Second"
3 -> "Third"
...

Answer

If you're OK with "1st", "2nd", "3rd" etc, here's some simple code that will correctly handle any integer:

public static String ordinal(int i) {
    String[] sufixes = new String[] { "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th" };
    switch (i % 100) {
    case 11:
    case 12:
    case 13:
        return i + "th";
    default:
        return i + sufixes[i % 10];

    }
}

Here's some tests for edge cases:

public static void main(String[] args) {
    int[] edgeCases = { 0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24, 100, 101, 102, 103, 104, 111, 112, 113, 114 };
    for (int edgeCase : edgeCases) {
        System.out.println(ordinal(edgeCase));
    }
}

Output:

0th
1st
2nd
3rd
4th
5th
10th
11th
12th
13th
14th
20th
21st
22nd
23rd
24th
100th
101st
102nd
103rd
104th
111th
112th
113th
114th
Comments