【发布时间】:2011-11-16 20:21:20
【问题描述】:
LinkedQueueClass 有 3 个元素:
"ABC"
"XYZ"
"123"
LinkedListQueue 中的元素是自定义类类型StringElement,它有一个数据成员,它包含一个字符串(word 数据成员)。
StringElement:
http://pastebin.com/zh0t2X5K
当我尝试使用search() 函数搜索队列中实际存在的元素时,它返回的boolean 值是false。表示找不到元素。
Main:
http://pastebin.com/vGegkcLZ
我哪里出错了?
EDIT(来自上述 Pastebin.org 链接的代码。)
主要:
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);
}
}
字符串元素:
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
}
}
来自 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;
}
【问题讨论】:
-
您构造的关键字对象与搜索对象不同。您正在尝试搜索不同的对象,尽管内容相同。
标签: java search queue linked-list