0

嗨,我对 java 有点陌生,我想弄清楚如何确定三个字符是否相等。如果它们确实彼此相等,我想弄清楚它们相等。我该怎么做?我没有任何有助于解决此问题的代码。

4

3 回答 3

5

这不是智能/动态解决方案,但有效:

char a = 'a';
char b = 'b';
char c = 'a'; 

if(a == c && b == c) {
    System.out.println("All chars are same");
} else {
    if(a == b) System.out.println("a equals b");
    if(a == c) System.out.println("a equals c");
    if(b == a) System.out.println("b equals a");
    if(b == c) System.out.println("b equals c");
    if(c == a) System.out.println("c equals a");
    if(c == b) System.out.println("c equals b");
}

输出:

a 等于 c
c 等于 a

动态方式:

char[] chars = {'a', 'b', 'a'};

for (int i = 0; i < chars.length; i++) {
    char char1 = chars[i];

    for (int i2 = 0; i2 < chars.length; i2++) {
        char char2 = chars[i2];

        if (i != i2) {
            if (char1 == char2) {
                System.out.println(char1 + " equals " + char2);
            } else {
                System.out.println(char1 + " not equals " + char2);
            }
        }
    }
}

输出:

a 不等于 b
a 等于 a
b 不等于 a
b 不等于 a
a 等于 a a
a 不等于 b

于 2013-04-13T01:00:51.447 回答
2

您使用测试字符的相等性==

  char c1 = ...
  char c2 = ...
  if (c1 == c2) {
      System.out.println("they are equal");
  }

&&您可以使用and||运算符(“and”和“or”)将其扩展到多个测试

  if (c1 == c2 && c2 == c3) {
      System.out.println("they are all equal");
  }

至于“弄清楚它们等于[to]”......最明显的解释是你想打印出字符的值

  if (c1 == c2 && c2 == c3) {
      System.out.println("All three characters are '" + c1 + "'");
      System.out.println("The Unicode codepoint is " + ((int) c1));
  }

最后一行将字符转换为整数并打印出来(十进制)。如果您尝试检查的字符不可打印,您可以这样做。此外,在某些情况下,两个或多个不同的 Unicode 代码点1在显示时无法区分。

(现在,如果您询问 1 个字符串...答案会非常不同。您不应该使用 比较任何类型的字符串==。您应该使用String.equals...)


1 - 实际上,代码点不是正确的术语。Achar通常表示一个 Unicode 代码点,但在某些情况下,一个代码点需要两个char值……一个代理对。有一个更准确的术语来说明 achar是什么,但目前我没有想到它。

于 2013-04-13T01:01:17.663 回答
1
char c1 = 'a';
char c2 = 'b';
char c3 = 'c';

// are all 3 equal?
if(c1 == c2 && c2 == c3) {
    // print out what the char is
    System.out.println("The characters all equal and is " + c1);
}
于 2013-04-13T00:59:07.520 回答