第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 concat 與 int 一起使用?

將 concat 與 int 一起使用?

慕工程0101907 2021-12-01 19:05:15
我正在嘗試執(zhí)行以下操作:如果用戶輸入了 1 到 100 之間的數(shù)字,則:打印出從 1 到給定數(shù)字的每個序數(shù)。以下示例適用于輸入值 25:1st2nd3rd4th5th6th7th8th9th10th11th12th13th14th15th16th17th18th19th20th21st22nd23rd24th25th我不知道如何在st, nd, rd, th不使用concat.這是我的代碼:import java.util.Scanner;public class Main {  public static void main(String[] args) {    Scanner scnr = new Scanner(System.in);   int userNum;  userNum = scnr.nextInt();  for (int i=1; i<=userNum; i++) {  System.out.println(i);    }  }}有沒有其他方法可以做到這一點?謝謝。
查看完整描述

3 回答

?
慕無忌1623718

TA貢獻1744條經(jīng)驗 獲得超4個贊

Java 中的特殊String連接運算符 ( +) 會自動將標量轉(zhuǎn)換為字符串(當字符串在左側(cè)時)。你可以這樣做:

System.out.println(""+i+getPostfix(i));

wheregetPostfix將為給定的整數(shù)(-st、-nd 等)返回一個合適的后綴。我將此功能的實現(xiàn)留作練習。


查看完整回答
反對 回復 2021-12-01
?
斯蒂芬大帝

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 ");

}


查看完整回答
反對 回復 2021-12-01
?
呼啦一陣風

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)));

}

}



查看完整回答
反對 回復 2021-12-01
  • 3 回答
  • 0 關(guān)注
  • 296 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號