Я пытаюсь проверить, имеют ли две массивы одинаковой длины и одинаковые значения в одном и том же месте.Сравнение значений двух массивов с использованием рекурсии?
Мой текущий код выглядит следующим образом:
public class MyArray {
private int size;
private int[] array;
private boolean isSorted; //to check if array is sorted
private static int arrCount; //used to identify which MyArray object
public MyArray(){
size = 10;
array = new int[10];
arrCount+=1;
}
public MyArray(int Size){
size = Size;
array = new int[Size];
arrCount+=1;
}
public MyArray(MyArray arrOther){
this.size = arrOther.getSize();
this.array = arrOther.getArray();
arrCount+=1;
}
public int getSize(){
return size;
}
public int[] getArray(){
return array;
}
@Override
public boolean equals(Object other){
if (other instanceof MyArray){
MyArray second = (MyArray) other;
if (second.getSize() == this.getSize())
return equalsHelper(this.getArray(), second.getArray(), 0, (size-1));
}
//else
return false;
}
private boolean equalsHelper(int[] first, int[] second, int iStart, int iEnd) {
if (iStart == iEnd) {
return true;
}
if (first[iStart] == second[iStart]) {
if (equalsHelper(first, second, (iStart + 1), iEnd)) {
return true;
}
}
return false;
}
}//end class
по какой-то причине он всегда возвращает значение ИСТИНА, даже если массивы в другом порядке.
метод равно вызывается в основной программе здесь:
--main method--
if (MA2.equals(MA1)) //the arrays are identical here
{
System.out.println("The first and second arrays are equal.");
}
else {System.out.println("The first and second arrays are NOT equal.");}
MA2.sort(); //the order of the elements changes
System.out.println("The second array has been sorted in ascending order.");
if (MA2.equals(MA1))
{
System.out.println("The first and second arrays are equal.");
}
else {System.out.println("The first and second arrays are NOT equal.");}
Клянусь, что другая женщина в своем классе разместила то же самое. – pczeus
@pczeus - это действительно актуальный секс? – Blorgbeard
Невозможно воспроизвести «всегда возвращает true»: см. [IDEONE] (https://ideone.com/XHcxdX).Сравнение двух массивов «1, 2, 3» возвращает true, как и ожидалось, и сравнение «1, 1, 1' с« 1, 2, 3' возвращает ** false **. – Andreas