亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

將 concat 與 int 一起使用?

將 concat 與 int 一起使用?

慕工程0101907 2021-12-01 19:05:15
我正在嘗試執行以下操作:如果用戶輸入了 1 到 100 之間的數字,則:打印出從 1 到給定數字的每個序數。以下示例適用于輸入值 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條經驗 獲得超4個贊

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

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

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


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

TA貢獻1827條經驗 獲得超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條經驗 獲得超6個贊

你可以不使用 concat 來做到這一點。您可以使用模數檢查 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 關注
  • 297 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號