3 回答

TA貢獻1744條經(jīng)驗 獲得超4個贊
Java 中的特殊String
連接運算符 ( +
) 會自動將標量轉(zhuǎn)換為字符串(當字符串在左側(cè)時)。你可以這樣做:
System.out.println(""+i+getPostfix(i));
wheregetPostfix
將為給定的整數(shù)(-st、-nd 等)返回一個合適的后綴。我將此功能的實現(xiàn)留作練習。

TA貢獻1827條經(jīng)驗 獲得超8個贊
你可以用 printf 做到這一點
for (int i=1; i<=userNum; i++) {
System.out.printf("%d%s\n",i,i%10==1 && i>19 ? "st " : i%10==2 && i>19 ? "nd " : i%10==3 && i>19 ? "rd " : "th ");
}

TA貢獻1802條經(jīng)驗 獲得超6個贊
你可以不使用 concat 來做到這一點。您可以使用模數(shù)檢查 number -st -nd -rd (% 10)
import java.util.*;
import java.util.AbstractMap.SimpleEntry;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class Main {
private static final String DEFAULT_POSTFIX = "th";
private static final Map<Integer, String> POSTFIX_MAP =
Stream.of(
new SimpleEntry<>(1, "st"),
new SimpleEntry<>(2, "rd"),
new SimpleEntry<>(3, "nt"))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
private static String getPostfix(int number) {
if (Arrays.asList(11,12,13).contains(number)) return DEFAULT_POSTFIX;
return Optional
.ofNullable(POSTFIX_MAP.get(number % 10))
.orElse(DEFAULT_POSTFIX);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int userNum = scanner.nextInt();
IntStream
.rangeClosed(1, userNum)
.forEach(it -> System.out.println(it + getPostfix(it)));
}
}
添加回答
舉報