2013-05-01 126 views
-1

我想检查字符串中的每个字符是否与第二个字符中的其他字符相反。相反,我的意思是大写和小写。java控制大写和小写字符串2字符串

例如,这些字符串:

  1. Ahh7h
  2. aHH7H

其结果将是true

我写了这个代码,但结果总是false。为什么?

public boolean checkString(String serverString, String clientString) { 
    if (serverString.length() != clientString.length()) 
     return false; 
    else 
     for (int i = 0; i < clientString.length(); i++) { 
      if ((clientString.charAt(i) >= '0' && clientString.charAt(i) <= '9') 
        && (clientString.charAt(i) != serverString.charAt(i))) 
       return false; 
      else if (clientString.charAt(i) >= 'A' 
        && clientString.charAt(i) <= 'Z') { 
       if ((int) clientString.charAt(i) != ((int) serverString 
         .charAt(i) + 32)) 
        return false; 
      } else if (clientString.charAt(i) >= 'a' 
        && clientString.charAt(i) <= 'z') { 
       if ((int) clientString.charAt(i) != ((int) serverString 
         .charAt(i) - 32)) 
        return false; 
      } 
     } 
    return true; 
} 
+0

使用代码块一致性和逻辑缩进。代码的缩进旨在帮助人们理解程序流程!还要注意,从不需要多于一个空白的空白行。 – 2013-05-01 13:51:26

回答

0

你可以使用“反转”之一的字符串:How can I invert the case of a String in Java?然后使用字符串.equals方法对它们进行比较。完整包含从How can I invert the case of a String in Java?

方法:

public static String reverseCase(String text) 
{ 
    char[] chars = text.toCharArray(); 
    for (int i = 0; i < chars.length; i++) 
    { 
     char c = chars[i]; 
     if (Character.isUpperCase(c)) 
     { 
      chars[i] = Character.toLowerCase(c); 
     } 
     else if (Character.isLowerCase(c)) 
     { 
      chars[i] = Character.toUpperCase(c); 
     } 
    } 
    return new String(chars); 
} 
0

你切换+ 32- 32

顺便说一句,这是一个更容易使用类似的方法:

Character.isDigit 
Character.isLowerCase 
Character.isUpperCase 
Character.toLowerCase 
Character.toUpperCase