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[] suffixes = 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 + suffixes[i % 10];
}
}
Here's some tests for edge cases:
public static void main(String[] args) {
int[] tests = {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, 1000};
for (int test : tests) {
System.out.println(ordinal(test));
}
}
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
1000th
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…