## Is there a way in Java to convert an integer to its ordinal name?

Question

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

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

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
``````