0
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._BinNum == ((バイナリ) a)._BinNum; a と b の値を等しく設定した場合でも、偽のステートメントが表示されます。誰でも助けることができますか?ありがとうございました!

4

6 に答える 6

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 StringIntegerそのためのクラスにはすでにメソッドがあります。またはと一緒に使用Integer#toBinaryStringする:-Integer#toStringradix

Integer.toBinaryString(5);
Integer.toString(5, 2);

もちろん、これは将来の参考のためです。学習目的で手動で実行してもかまいません。


補足として、コード内のJava命名規則に従う必要があります。これにより、将来、他のユーザーが簡単に読み取れるようになります。

  • 変数名とメソッド名は、小文字のアルファベット、ドル、またはアンダースコアで始める必要があります。
于 2012-11-22T05:59:55.167 に答える
4

_BinNumは文字列なので、

this._BinNum.equals(((Binary) a)._BinNum)
于 2012-11-22T06:00:42.320 に答える
2

equals()文字列の比較には、演算子ではなくメソッドを使用する必要があります====オブジェクトの内容ではなく、オブジェクトの参照を比較します

于 2012-11-22T05:59:57.057 に答える
2

これらは2つの異なるオブジェクトであり、それらの参照は異なり、等しくありません。

Stringequals()メソッドを使用します。

于 2012-11-22T06:00:30.017 に答える
1

stringA.equals(stringB)このための関数を使用してみてください

于 2012-11-22T06:00:15.817 に答える
1

演算子"=="は、オブジェクトのハッシュコードに基づいて、オブジェクトが等しいかどうかを調べます。ただし、オブジェクト内の値は検索されません。

一方、equals()メソッドは、オブジェクトの値をチェックします。したがって、stringA.equals(stringB)を使用してみてください

于 2012-11-22T06:28:29.217 に答える