繁体   English   中英

Java。 大写,增加期

[英]Java. Capitalizing, adding period

正在从事这项新手任务,需要帮助。

此代码必须:将第一个单词的首字母大写。 在句子的末尾添加句点(。)。 将单词连接成一个完整的字符串,并带有空格。 不要对单词进行其他操作。

这是此代码应执行的示例:INPUT“ i ”,“ am ”,“ super ”,“ HERO ”输出我是super HERO。

我在这种情况下想到了这一点:

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

}

但是在“ 追加 ”和“ 大写 ”处捕获错误-无法解决方法。 请帮忙。

说明

StringJoiner不提供appendcapitalize方法,因此会出现错误。 检查文档

. 应该添加到sj.toString()的结果上,即String result = sj.toString() + "."; 大写必须在第一个单词s ,而不要在StringJoinerStringJoiner


这是一个完整的工作片段:

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后缀

您还可以添加"." 通过使用StringJoiner的后缀:

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

然后它将自动添加"." 到最后,当您执行toString

与Stream解决方案类似:

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

一个带有StringBuilder的小例子,您可以在这里https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html进行检查,它们具有append方法。

对于单词大写,您可以检查如何大写字符串中每个单词的第一个字符

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

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

    sb.toString();

无法使用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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM