字符串没有转换为小写字母,尽管字符串包含全部小写字母

时间:2017-10-02 19:21:04

标签: java string character primitive-types stringbuffer

试图解决"有效回文的问题"下面是代码。当我将stringbuffer转换为字符串和小写时,字符串将被打印为全部小写字母,但是当我使用s.charAt(i)进行比较时,我也会得到大写字母。

 public static void main(String []args){

     String s = "aA";

    String[] strings = s.split("[^A-Za-z0-9]");
    StringBuffer sb = new StringBuffer(); 

    for(int i =0; i<strings.length;i++){
        sb.append(strings[i]);
    }
    String newString = sb.toString().toLowerCase();
    System.out.println("New String "+newString);***// output : aa(lower case)***

    for(int i =0; i<newString.length()/2;i++){
        if(s.charAt(i) != s.charAt(newString.length()-i-1)){
             System.out.println(s.charAt(i));//**output 'a**
             System.out.println(s.charAt(newString.length()-i-1));//***output 'A'***
        }

    }

有人可以解释一下原因吗?

2 个答案:

答案 0 :(得分:1)

您没有修改s,小写字符串位于newString。您需要将第二个变量替换为:

for(int i =0; i<newString.length()/2;i++){
        if(newString.charAt(i) != newString.charAt(newString.length()-i-1)){
             System.out.println(s.charAt(i));//**output 'a**
             System.out.println(s.charAt(newString.length()-i-1));//***output 'A'***
        }
    }

答案 1 :(得分:0)

如果您愿意使用小写,请使用image.Image变量而不是字符串newString;

s

}

如果您打算检查回文,那么以下可以是一个解决方案。

for(int i =0; i<newString.length()/2;i++){
    if(newString.charAt(i) != newString.charAt(newString.length()-i-1)){
         System.out.println(newString.charAt(i));
         System.out.println(newString.charAt(newString.length()-i-1));
    }