Java平等不起作用?
嗨,伙计们!我的equals函数不起作用,原因我搞不懂。这个。_BinNum==((二进制)a)。_BinNum;即使我将a和b的值设置为相等,也会给我一个错误的陈述。有人能帮忙吗?谢谢大家! 就像您使用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
方法来比较实例一样,您也应该使用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)