在这个新秀的工作任务和需要帮助。
此代码必须大写:第一个单词的第一个字母。添加一个句号(。)到句末。加入的话成一个完整的字符串,用空格。做的话没有任何其他操作。
下面是这段代码应该做的一个例子: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,帮助。
一个StringJoiner
不提供方法append
和capitalize
,因此你的错误。检查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);
如果你喜欢,流API:
String result = capitalize(arr[0])
+ Arrays.stream(arr).skip(1)
.collect(Collectors.joining(" "))
+ ".";
您也可以通过使用"."
s后缀加StringJoiner
的:
StringJoiner sj = new StringJoiner(" ", "", ".");
它会那么"."
自动添加到最后,当你做toString
。
类似的Stream解决方案:
Collectors.joining(" ", "", ".")
一个小例子与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();
有没有办法使用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);
}