Java的。善用,添加时间段

问题描述 投票:-1回答:3

在这个新秀的工作任务和需要帮助。

此代码必须大写:第一个单词的第一个字母。添加一个句号(。)到句末。加入的话成一个完整的字符串,用空格。做的话没有任何其他操作。

下面是这段代码应该做的一个例子:INPUT“我”,“上午”,“超级”,“英雄” OUTPUT我是超级英雄。

我在这种情况下,想到这个问题:

import java.util.StringJoiner;
import java.lang.String;

public class My {
    public static void main(String[] args) {

        String[] arr = new String[]{"i", "am", "super", "HERO"};
        StringJoiner sj = new StringJoiner(" ");
        //StringBuffer sb = new StringBuffer(".");
        for (String s : arr) {
            sj.add(s);
        }
        sj.append(".");
        sj.capitalize();
        System.out.println(sj);

}

但在“追加”和“利用”恶补错误 - 无法解析方法。 PLS,帮助。

java punctuation capitalize
3个回答
3
投票

说明

一个StringJoiner不提供方法appendcapitalize,因此你的错误。检查documentation

.sj.toString(),即String result = sj.toString() + ".";的结果被添加。资本必须在第一个字s来完成,而不是在StringJoiner


这是一个工作片段放在一起:

String[] arr = new String[]{"i", "am", "super", "HERO"};

StringJoiner sj = new StringJoiner(" ");
// Capitalize first word
sj.add(Character.toUpperCase(arr[0].charAt(0)) + arr[0].substring(1));
// Add the remaining words
for (int i = 1; i < arr.length; i++) {
    sj.add(arr[i]);
}
String result = sj.toString() + ".";

System.out.println(result);

请注意,您可能要检查的边缘情况下存在arr无字可言,即它是空的。然后,当前的代码将失败。


请你帮个忙和包装的利用代码放到一个小工具的方法:

private static String capitalize(String word) {
    return Character.toUpperCase(word.charAt(0)) + word.substring(1);
}

然后代码就是:

String[] arr = new String[]{"i", "am", "super", "HERO"};

StringJoiner sj = new StringJoiner(" ");
// Capitalize first word
sj.add(capitalize(arr[0]));
// Add the remaining words
for (int i = 1; i < arr.length; i++) {
    sj.add(arr[i]);
}
String result = sj.toString() + ".";

System.out.println(result);

Stream解决方案

如果你喜欢,流API:

String result = capitalize(arr[0])
    + Arrays.stream(arr).skip(1)
        .collect(Collectors.joining(" "))
    + ".";

StringJoiner后缀

您也可以通过使用"."s后缀加StringJoiner的:

StringJoiner sj = new StringJoiner(" ", "", ".");

它会那么"."自动添加到最后,当你做toString

类似的Stream解决方案:

Collectors.joining(" ", "", ".")

0
投票

一个小例子与StringBuilder的,你可以查看这里https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html,有append方法。

对于字大写,您可以检查How to capitalize the first character of each word in a string

    String[] arr = new String[]{"i", "am", "super", "HERO"};
    StringBuilder sb = new StringBuilder();

    for (String word : arr){
        sb.append(WordUtils.capitalize(word));
    }

    sb.toString();

0
投票

有没有办法使用StringJoiner这样做。

public class My {
public static void main(String[] args) {

    String[] arr = new String[]{"i", "am", "super", "HERO"};
    arr[0].toUpperCase();

    StringJoiner sj = new StringJoiner(" ");

    for (String s : arr) {

        sj.add(s);
    }
    sj.append(".");

    System.out.println(sj);
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.