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));
}
}
嗨,大家好!我的平等功能由于某些原因无法解决。 this._BinNum ==((二进制)a)._ BinNum;即使我将a和b的值设置为相等,也会给我一个错误的陈述。有人可以帮忙吗?谢谢!
答案 0 :(得分:4)
就像您使用equals
方法来比较实例一样,您还应该使用equals
方法来比较字符串: -
this._BinNum.equals(((Binary) a)._BinNum)
另外,我不明白您为什么在this == a
方法中进行equals
比较。除非您在传递的同一实例上调用equals方法,否则它将始终返回false。所以你不需要那个。只需使用: -
public boolean equals(Object a) {
return (a instanceof Binary && this._BinNum.equals(((Binary) a)._BinNum));
}
您似乎正在尝试将Decimal
值转换为Binary String
。你已经在Integer
类中有了一个方法。使用Integer#toBinaryString
或Integer#toString
与radix
: -
Integer.toBinaryString(5);
Integer.toString(5, 2);
这当然是为了您将来的参考,因为可以手动进行学习。
作为旁注,您应该在代码中关注Java Naming Conventions,以便日后其他用户可以轻松阅读。
答案 1 :(得分:4)
_BinNum是一个字符串,所以使用
this._BinNum.equals(((Binary) a)._BinNum)
答案 2 :(得分:2)
您应该使用equals()
方法来比较字符串而不是==
运算符。 ==
比较对象引用而不是对象内容
答案 3 :(得分:2)
这是两个不同的对象,它们的引用是不同的,不相等。
使用String
的{{1}}方法。
答案 4 :(得分:1)
您应该尝试使用stringA.equals(stringB)
功能
答案 5 :(得分:1)
运算符“==”将根据对象的哈希码查看对象是否相等。但是,它不会在对象中寻找值。
然而,equals()方法将检查对象中的值。所以,尝试使用stringA.equals(stringB)