There's a LinkedQueueClass
that has 3 elements:
"ABC"
"XYZ"
"123"
The elements inside the LinkedListQueue
are of custom class type StringElement
which has one data member, it holds a string (word data member).
StringElement
:
http://pastebin.com/zh0t2X5K
When I try to use the search()
function to search for an element that actually exists in the queue the boolean
value it returns is false
. Means that it can't find the element.
Main
:
http://pastebin.com/vGegkcLZ
Where I went wrong?
EDIT (Code from Pastebin.org links mentioned above.)
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() from 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;
}