What century is it in Java

The challenge

Return the century of the input year. The input will always be a 4 digit string, so there is no need for validation.

Examples

"1999" --> "20th" "2011" --> "21st" "2154" --> "22nd" "2259" --> "23rd" "1124" --> "12th" "2000" --> "20th"
Code language: JavaScript (javascript)

The solution in Java code

Option 1:

public class Solution{ public static String whatCentury(int year) { int century = (year + 99) / 100; if (century / 10 == 1) return century + "th"; switch(century % 10) { case 1: return century + "st"; case 2: return century + "nd"; case 3: return century + "rd"; default: return century + "th"; } } }
Code language: Java (java)

Option 2:

public class Solution{ public static String whatCentury(int year) { int c = (int)Math.ceil(year/100.), a = c%100, b = c%10; return c + (10 < a && a < 14 ? "th" : b == 1 ? "st" : b == 2 ? "nd" : b == 3 ? "rd" : "th"); } }
Code language: Java (java)

Option 3:

public class Solution{ public static String whatCentury(int year) { int century = year < 100 ? 1 : year % 100 == 0 ? year / 100 : year / 100 + 1; String postfix = "th"; if (century < 11 || century > 20) { switch (century % 10) { case 1: postfix = "st"; break; case 2: postfix = "nd"; break; case 3: postfix = "rd"; break; } } return century + postfix; } }
Code language: Java (java)

Test cases to validate our solution

import org.junit.Test; import static org.junit.Assert.assertEquals; import org.junit.runners.JUnit4; public class SolutionTest { @Test public void testSomething() { assertEquals("20th", Solution.whatCentury(1999)); assertEquals("21st", Solution.whatCentury(2011)); assertEquals("22nd", Solution.whatCentury(2154)); assertEquals("23rd", Solution.whatCentury(2259)); } }
Code language: Java (java)

Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments