-1

我想检查字符串中的每个字符是否与第二个字符中的另一个字符相反。反向我的意思是大写和小写。

例如这些字符串:

  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;
}
4

2 回答 2

0

您可以使用以下方法“反转”一个字符串:如何在 Java 中反转字符串的大小写?然后使用 Strings .equals 方法来比较它们。

方法来自如何在 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);
}
于 2013-05-01T13:52:16.883 回答
0

您已切换+ 32- 32

顺便说一句,使用以下方法要容易得多:

Character.isDigit
Character.isLowerCase
Character.isUpperCase
Character.toLowerCase
Character.toUpperCase
于 2013-05-01T13:55:36.877 回答