0
내 제목이 내가하려는 일을 설명하기를 바랍니다.Palindrome Program Help : 두 배의 배열을 포함하는 객체의 LinkedList.
private LinkedList<MyVector> list = new LinkedList();
그때 내가 만든 회문 클래스의 생성자를 사용하여 목록에 추가 한 :
//creates arrays of doubles inside of MyVector Objects.
public Palindrome(){
double[] a1 = {3.0, 4.0, 3.0};
double[] a2 = {3.5, 4.5, 3.5};
MyVector a = new MyVector(a1);
MyVector b = new MyVector(a2);
MyVector c = new MyVector(a1);
MyVector d = new MyVector(a2);
MyVector e = new MyVector(a1);
//adds the MyVector Objects into the LinkedList
list.add(a);
list.add(b);
list.add(c);
list.add(d);
list.add(e);
}
내가 지금 포인터를 비교하는 방법을 만드는 오전을 나는 LinkedList의를 만들었습니다 "MyVector"개체의 목록을 통해 두 개의 서로 다른리스트 반복자의 :
public boolean isPalindrome(){
//iterates through LinkedList From Beginning to End
ListIterator<MyVector> itr1 = list.listIterator();
//iterates through LinkedList from End to Beginning
ListIterator<MyVector> itr2 = list.listIterator(list.size());
while (itr1.next() == itr2.previous()){
return true;
}
return false;
}
내 문제는 내가에 새로운 회문 객체를 생성 할 때 main 메소드를 호출 한 다음 객체 목록이 사실 회문인지 여부를 확인하고, 항상 "목록은 회문이 아닙니다"라는 출력을 얻습니다. (목록의 객체를 특별히 작성하여 테스트 당신이 내 회문 생성자를 살펴 경우) :
Palindrome pal = new Palindrome();
if(pal.isPalindrome()){
System.out.println("It's a palindrome");
} else {
System.out.println("It's not a palindrome");
}
답장을 보내 주셔서 감사합니다. 왜 지금 출력을 얻었는지 이해합니다. equals 메소드가 (ListIterator temp)의 정수를 가지고 있지 않을까요? 두 개의 반복자를 비교하고 있기 때문입니다. 그게 말이되지 않으면 미안해. 나는 아직도 이것 전부를 가진 초심자이다 그래서 나는 당신이 저를하는 방법하는 무슨을 이해하는 거친 시간을 이해하고있다. –
user2994120
next \ previous 메서드는 ListIterator 객체가 아닌 목록의 객체를 제공합니다. 디폴트의 equals 메소드는, 양쪽 모두의 오브젝트 해시 코드를 비교합니다. 내가 제공 한 equals 함수는 hashcode가 아닌 객체의 값을 비교합니다. 객체를 캐스팅하기 전에 MyVector의 인스턴스인지 확인하기 위해 instanceof 연산자를 추가했습니다. – Myth1c