gpt4 book ai didi

java - 当单词之间使用大量空格时,第一个字母不会更改为大写

转载 作者:太空宇宙 更新时间:2023-11-04 06:58:44 24 4
gpt4 key购买 nike

我想将每个单词的第一个字母大写。当我输入 test test test 时,它会更改为 Test Test Test,但是如果我在 test test test 之间使用大量空格,它不会将第一个字母更改为大写。我应该如何更改代码才能正常工作?

public class Solution
{
public static void main(String[] args) throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));


try{
String test = reader.readLine();
String[] testSplit = test.split( " " );
StringBuilder sb = new StringBuilder();
for (int I =0 ; I < testSplit.length ; I ++){
String capitalVer = capitalizeFirstLetter(testSplit[I]);
if( I != 0 ){
sb.append(" ");
}
sb.append(capitalVer);
}
System.out.println(sb.toString());
}
catch(Exception es)
{

}
}



public static String capitalizeFirstLetter(final String string)
{
if (string == null || string.equals("") )
throw new NullPointerException("no string ");

return Character.toUpperCase(string.charAt(0)) + string.substring(1);
}
}

最佳答案

有两件事。首先,您的意思是按空格分割:

test.split( " " )

其次,当您输入空字符串时,您的 capitalizeFirstLetter() 会引发异常。但是,由于您捕获并忽略异常,因此您永远看不到它。

出现空字符串的原因是您使用单个空格作为分隔符,因此分割 "" 会导致 5 个空字符串(在空格之间)。您可以修改capitalizeFirstLetter()来处理空字符串,或者分割\s+来折叠空格——但是请注意,后者会折叠输出中的连续空格。

添加 System.out.println(Arrays.toString(testSplit)) 是准确查看数组包含内容的好方法。

这里的寓意是:正确处理异常;不要只是吞下它们并忽略它们。通过捕获异常,甚至在异常发生时不打印有关它们的信息,您已经有效地禁用了任何可能让您追踪此问题的信息。

顺便说一句,NullPointerException 并不真正适合那里的空字符串; IllegalArgumentException 可能更具描述性。

关于java - 当单词之间使用大量空格时,第一个字母不会更改为大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22392874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com