Есть LinkedQueueClass
, который имеет 3 элемента:
"ABC"
"XYZ"
"123"
Элементы внутри LinkedListQueue
имеют пользовательский тип класса StringElement
, который имеет один элемент данных, он содержит строку (элемент данных word).
StringElement
:
http://pastebin.com/zh0t2X5K
Когда я пытаюсь использовать функцию search()
для поиска элемента, который действительно существует в очереди, возвращаемое значение boolean
равно false
. Означает, что не может найти элемент.
Main
:
http://pastebin.com/vGegkcLZ
Где я ошибся?
РЕДАКТИРОВАТЬ (Код из ссылок Pastebin.org, упомянутых выше.)
Main:
public class StringElement extends DataElement {
protected String word;
public StringElement(String str)
{
word = str;
}
public StringElement(StringElement otherElement)
{
word = otherElement.word;
}
@Override
public boolean equals(DataElement otherElement) {
StringElement temp = (StringElement) otherElement;
return (word == temp.word);
}
@Override
public int compareTo(DataElement otherElement) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void makeCopy(DataElement otherElement) {
StringElement temp = (StringElement) otherElement;
word = temp.word;
}
@Override
public DataElement getCopy() {
StringElement temp = new StringElement(word);
return temp;
}
@Override
public String toString()
{
return String.valueOf(word);
}
}
StringElement:
import java.util.Scanner;
public class Run {
public static void main(String args[]){
LinkedQueueClass strQueue = new LinkedQueueClass();
strQueue.addQueue(new StringElement("ABC"));
strQueue.addQueue(new StringElement("XYZ"));
strQueue.addQueue(new StringElement("123"));
System.out.println();
//ask user for a keyword to search for
System.out.print("Search keyword: ");
Scanner scan = new Scanner(System.in);
String userInput;
userInput = scan.next();
//place the entered keyword into a StringElement and use it
//to search for the element with mathing keyword
StringElement keyword = new StringElement(userInput);
System.out.println(keyword.toString());//debugging: to confirm userInput value got stored in keyword object
System.out.println(strQueue.search(keyword));//search returns false
}
}
search () из UnorderedLinkedList:
public boolean search(DataElement searchItem)
{
Node current; //pointer to traverse the list
boolean found;
current = first; //set current pointing to the first
//node in the list
found = false; //set found to false
while(current != null && !found) //search the list
if(current.info.equals(searchItem)) //item is found
found = true;
else
current = current.link; //make current point to
//the next node
return found;
}