Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java isUpperCase/toTitleCase/isWhiteSpace问题。_Java - Fatal编程技术网

Java isUpperCase/toTitleCase/isWhiteSpace问题。

Java isUpperCase/toTitleCase/isWhiteSpace问题。,java,Java,我创建了一个代码,当我输入字符串时,它将检查每个单词的第一个字母是否需要改为大写。例如,当输入字符串“thebrownbigdog!”时,它将显示为“thebrownbigdog!” 这是我的密码 public String convertToTitleCase(String s) { if (s.isEmpty()) return ""; else { String word = ""; boolean flag = false;

我创建了一个代码,当我输入字符串时,它将检查每个单词的第一个字母是否需要改为大写。例如,当输入字符串“thebrownbigdog!”时,它将显示为“thebrownbigdog!”

这是我的密码

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是的,我刚刚意识到,我也更改了答案以显示另一个解决方案。