我正在研究这种方法,但我遇到了一个问题。当我输入一个与链表索引中的数据匹配的单词时,它只打印链表的第一个索引,其次数与我输入的单词在整个链表中出现的次数相同。
public void iteratePrint(T aData) {
if (head == null) {
return;
}
//Typecast aData to string, and make it lowercase.
String a = (String)aData;
String strInput = a.toLowerCase();
//Create temp listnode to loop through.
ListNode temp = head;
//While temp is not null, check for match and if so, print.
while(temp != null) {
//Typecast temp.data into string (all of the data is a string anyway) and
//Make sure it is lowercase.
String b = (String)temp.data;
String strTemp = b.toLowerCase();
//This checks for the match and prints the current line.
//Not currently working
if(strTemp.contains(strInput)){
System.out.println(temp.getCurrent());
}
temp = temp.next;
}
}
例如:链表包含这些字符串数据和它们各自的索引(球弹得很远,狗玩捡球,我最喜欢的玩具是球)。如果我输入的是"ball",我希望输出的是
balls bounce far
dogs play fetch with balls
my favorite toy is a ball
但是,它只输出如下内容:
balls bounce far
balls bounce far
balls bounce far
Ball出现了3次,它只打印出链表的第一个索引,即输入出现的次数。
如果strTemp.contains(strInput)
不满足,temp = temp.next;
将不会执行,因此while循环将卡住。将temp = temp.next;
移出if语句
我解决了这个问题。问题是我的getCurrent()
方法。它是返回current.data
,当我需要返回我的temp.data
。感谢所有帮助过我的人!我很感激。