java - 代码流程未进入嵌套 if 语句以将字符串更改为标题大小写

标签 java string

此代码在嵌套 if 条件之后不起作用。我正在尝试将 String 转换为标题大小写,只要在字符串中遇到空格,我就会检查下一个字符是否为小写,并使用 ASCII 字符编码将其转换为大写。但是,它确实会执行到嵌套的 if 循环,但不会执行那里的条件。我使用 Eclipse 调试视角得出了这个结论

    public class Word {
      public static void main(String args[]) {

          String rev= "This is a string";
          char a[]=new char[rev.length()];

          for (int i = 0; i < a.length;i ++) {
              a[i]=rev.charAt(i);
             if (a[i] == ' ') {
                 if (a[i+1] >= 'a' && a[i+1] <= 'z') {
                     a[i+1] -= 32;
                 }
             }
         }  
            String title=new String (a);
            System.out.print(title);
     }
   }

最佳答案

给定程序的问题是:

如果 (a[i+1] >= 'a' && a[i+1] <= 'z') , a[i+1] 未被 a[i]=rev.charAt(i) 初始化;所以,在(i +1)索引,它在 a[i+1] 上没有获得任何值。

您在索引 (i +1) using a[i+1] -= 32; 中使用大写字母在下一次迭代中,该索引值再次替换为 a[i]=rev.charAt(i) ;

将最后一个字符视为空格,然后使用 if (rev.charAt(i) == ' ' && i +1 < a.length)处理条件

检查一下:

public class Word {
    public static void main(String args[]) {
        String rev = "This is a string";
        char[] a = new char[rev.length()];

        int i = 0;
        for (; i < a.length; i++) {
            a[i] = rev.charAt(i);
            if (rev.charAt(i) == ' ' && i + 1 < a.length) {
                if (rev.charAt(i+1) >= 'a' && rev.charAt(i+1) <= 'z') {
                    a[i + 1] = (char)(rev.charAt(i + 1) - 32);
                    i++;
                }
            }
        }  
        String title = new String(a);
        System.out.print(title);
    }
}

输出:

This Is A String

关于java - 代码流程未进入嵌套 if 语句以将字符串更改为标题大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32781754/

相关文章:

string - 如何向 Ansible 变量添加新行 "\n"字符

xcode - rangeOfString 每次都不返回 nil

java - 在 CardLayout 等中重用动态 JList 和 Action 监听器

java - 异步 Java RMI

java - 将自定义 UserDetailsS​​ervice Autowiring 到 AbstractAuthenticationProcessingFilter

python - 剥离 numpy 数组中的空格

java - 需要将动物可以吃的食物表示为字符串数组,但有食物对象

java - 防止过多的注册请求

java - 如何在单独的Java包中读取文本文件的内容

c# - 为什么 String.CompareTo 不考虑字符串长度?