Java isUpperCase/toTitleCase/isWhiteSpace问题。
我创建了一个代码,当我输入字符串时,它将检查每个单词的第一个字母是否需要改为大写。例如,当输入字符串“thebrownbigdog!”时,它将显示为“thebrownbigdog!” 这是我的密码Java isUpperCase/toTitleCase/isWhiteSpace问题。,java,Java,我创建了一个代码,当我输入字符串时,它将检查每个单词的第一个字母是否需要改为大写。例如,当输入字符串“thebrownbigdog!”时,它将显示为“thebrownbigdog!” 这是我的密码 public String convertToTitleCase(String s) { if (s.isEmpty()) return ""; else { String word = ""; boolean flag = false;
public String convertToTitleCase(String s)
{
if (s.isEmpty())
return "";
else
{
String word = "";
boolean flag = false;
char w = s.charAt(0);
if(!Character.isUpperCase(s.charAt(0)))
w = Character.toTitleCase(s.charAt(0));
word = word + w;
if(s.length()==1)
return word;
for (int i = 1; i<(s.length()-1); i++)
{
if (!Character.isWhitespace(s.charAt(i)) && flag == false)
word = word + s.charAt(i);
if (!Character.isWhitespace(s.charAt(i)) && flag == true)
flag = false;
if (Character.isWhitespace(s.charAt(i)))
{
word = word + " ";
w = s.charAt(i+1);
word = word + Character.toTitleCase(w);
flag = true;
}
}
if (!Character.isWhitespace(s.charAt(s.length()-2)))
word = word + s.charAt(s.length()-1);
return word;
}
public String convertToTitleCase(字符串s)
{
如果(s.isEmpty())
返回“”;
其他的
{
字串=”;
布尔标志=假;
字符w=s.charAt(0);
如果(!Character.isUpperCase(s.charAt(0)))
w=字符总数(s.charAt(0));
word=word+w;
如果(s.长度()==1)
返回词;
对于(inti=1;i你声明了这一点
布尔标志=假
然后在java中检查布尔变量的值,如下所示:
标志==假
试一试
(!旗帜)
另外,您的测试人员是否分享了失败的测试用例,或者您应该自己解决这个问题?我将向您展示另一个解决方案:
private static String convertToTitleCase(String s)
{
Matcher m = Pattern.compile("(?<=\\s)[a-z]").matcher(s);
StringBuilder builder = new StringBuilder(s);
while (m.find()) {
builder.replace(m.start(), m.start() + 1, m.group().toUpperCase());
}
return builder.toString();
}
私有静态字符串convertToTitleCase(字符串s)
{
Matcher m=Pattern.compile(“(?你的测试人员发现了哪种情况?他没有给你一个单元测试来证明你的代码有问题吗?@SzymonStepniak有,但只有3种情况。绿色的复选标记表示通过,黑色的x表示错误,红色的x表示失败。我有一个黑色的x。如果第一个字符是空格,实际是l语句从第二个字符开始,在这种情况下,它没有正确的大写。也许,您可以修剪字符串的前导空格,然后执行其余的操作。对于所有其他输入,您的代码应该可以正常工作。这不会有任何区别。可能不会。但我不建议使用==进行布尔检查,因为它是冗余的现在,你有一个观点。只有3个出来,绿色的复选标记,背面的x和红色的x,所以是的,我必须自己解决这个问题。问题是我尝试了很多情况,结果都是应该的。我不太确定我错过了什么其他情况。我试过用这根绳子“棕色的大狗”“。我发现结果是‘棕色大狗’。这是预期的结果还是你预期的‘棕色大狗’?@Amitava这是预期的结果,因为如果单词的字母是小写,它只会更改每个单词的第一个字母。在其中,它将更改为大写。如果输入“p”,我发现错误。”它将返回不变。你知道我应该做什么修改来修复这个原因吗?我做了修改,但它仍然返回“p”,我发现了另一个问题。如果我输入“p”,它将返回“”@ZackColbin是的,我刚刚意识到,我也更改了答案以显示另一个解决方案。