ここで私のオブジェクトが等しいかどうかをテストしようとしています!最初の等式がFalseなぜ
偽
偽
偽Java - equalsメソッドの出力が間違っています
を:
真
偽
偽
しかし、私はこの出力を取得しています:これは、出力があるべきするアレイについて
?ここで
//arrays
a = {1, 2, 3}
b = {1, 2, 3}
c = {2, 3, 1}
static void testEquals(Scanner scanner) {
int[] a = readArray(scanner);
int[] b = readArray(scanner);
int[] c = readArray(scanner);
IntegerArray ia = new IntegerArray(a);
IntegerArray ib = new IntegerArray(b);
IntegerArray ic = new IntegerArray(c);
System.out.println(ia.equals(ib));
System.out.println(ia.equals(ic));
System.out.println(ib.equals(ic));
}
はIntegerArrayクラスの実装です:
*注:このクラスは不変でなければならない
final class IntegerArray {
private int[] a;
public IntegerArray(int arr[]) {
a = new int[arr.length];
for(int i = 0; i < a.length; i++)
{
a[i] = arr[i];
}
}
public int length() {
return a.length;
}
public int getElementAt(int i) {
return a[i];
}
public int sum() {
int sum = 0;
for(int i = 0; i < a.length; i++)
{
sum += a[i];
}
return sum;
}
public double average() {
return (double) this.sum()/this.length();
}
public IntegerArray getSorted() {
int[] temp = Arrays.copyOf(a, a.length);
Arrays.sort(temp);
return new IntegerArray(temp) ;
}
}
をオーバーライドすることで、私のプログラムを修正しました。あなたはおそらく 'equals'をオーバーライドしていません。 – rgettman
あなたの前提が正しくありません。この場合のオブジェクト参照のメソッドチェックを行います。 – RamPrakash
はい、iaとibは、メンバーが等しくなる2つの異なるオブジェクトです。しかし、それらは異なったオブジェクトです – Tyler