2013-05-01 153 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