RosettaCodeData/Task/Nth/Java/nth-2.java

49 lines
1022 B
Java

package nth;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public interface Nth {
public static String suffix(int n){
if(n % 100 / 10 == 1){
return "th"; //teens are all "th"
}
switch(n % 10){
case 1: return "st";
case 2: return "nd";
case 3: return "rd";
default: return "th"; //most of the time it should be "th"
}
}
public static void print(int start, int end) {
IntStream.rangeClosed(start, end)
.parallel()
.mapToObj(i -> i + suffix(i) + " ")
.reduce(String::concat)
.ifPresent(System.out::println)
;
}
public static void print(int[] startAndEnd) {
print(startAndEnd[0], startAndEnd[1]);
}
public static int[] startAndEnd(int start, int end) {
return new int[] {
start,
end
};
}
public static void main(String... arguments){
Stream.of(
startAndEnd(0, 25),
startAndEnd(250, 265),
startAndEnd(1000, 1025)
)
.forEach(Nth::print)
;
}
}