Java平等不起作用?

Java平等不起作用?,java,binary,equals,Java,Binary,Equals,嗨,伙计们!我的equals函数不起作用,原因我搞不懂。这个。_BinNum==((二进制)a)。_BinNum;即使我将a和b的值设置为相等,也会给我一个错误的陈述。有人能帮忙吗?谢谢大家! 就像您使用equals方法来比较实例一样,您也应该使用equals方法来比较字符串:- public class Binary { private int _DecNum; private String _BinNum; public Binary(int n) { _

嗨,伙计们!我的equals函数不起作用,原因我搞不懂。这个。_BinNum==((二进制)a)。_BinNum;即使我将a和b的值设置为相等,也会给我一个错误的陈述。有人能帮忙吗?谢谢大家!

就像您使用
equals
方法来比较实例一样,您也应该使用
equals
方法来比较字符串:-

public class Binary {

    private int _DecNum;
    private String _BinNum;

    public Binary(int n) {
    _DecNum = n;
    _BinNum = ConvToBinR(n);
    }

    public static String ConvToBin(int n) {
    String a = "";
    while(n > 1) {
        a = (n % 2) + a;
        n = n /2;
    }
    return n + a;
    }

    public String toString() {
    return _BinNum;
    }

    public boolean equals(Object a) {
    return this == a || (a instanceof Binary && this._BinNum == ((Binary) a)._BinNum);
    }

    public static void main(String[] args ) {
    int a = Integer.parseInt(args[0]);
    int b = Integer.parseInt(args[1]);
    Binary Zero = new Binary(a);
    Binary One = new Binary(b);
    System.out.println("Base 10: " + a + " in Base 2: " + Zero);
    System.out.println(Zero.equals(One));
    }
}
另外,我不明白为什么在
equals
方法中有一个
this==a
比较。这将始终返回false,除非您正在传递的同一实例上调用equals方法。所以你不需要那个。只要用这个:-

this._BinNum.equals(((Binary) a)._BinNum)

似乎您正在尝试将
十进制
值转换为
二进制字符串
。您在
Integer
类中已经有了一个用于此的方法。使用或与基数一起使用:-

public boolean equals(Object a) {
    return (a instanceof Binary && this._BinNum.equals(((Binary) a)._BinNum));
}
当然,这是供您将来参考,因为出于学习目的,可以手动操作


作为一个补充说明,您应该遵循您的代码,以便将来其他用户能够轻松阅读

  • 变量和方法名称应以小写字母、美元或下划线开头

您应该使用
equals()
方法来计算字符串,而不是
=
运算符
=
比较对象引用而不是对象内容

您应该尝试为此使用
stringA.equals(stringB)
函数

这是两个不同的对象,它们的引用不同且不相等


使用
String
equals()
方法。

\u BinNum是一个字符串,因此请使用

Integer.toBinaryString(5);
Integer.toString(5, 2);
运算符“==”将根据对象的哈希代码查看对象是否相等。但是,它不会在对象中寻找值


然而,equals()方法将检查对象中的值。因此,在这个问题悬而未决的19秒内,尝试使用stringA.equals(stringB)

4个答案和1条注释。
this._BinNum.equals(((Binary) a)._BinNum)