我不知道在哪里或如何放置我的return语句,所以我找回了一个链表。链表的返回是循环的。我需要在那之外有一个返回声明,但是不能让tit工作。我只是继续获得null返回。尝试输入一个else语句,但它不起作用。我觉得这是一个简单的解决方案,但无法解决。我知道返回null总是在这段代码中读取,只是不知道如何放置它所以它并不总是返回null。
方法是接收一串数字,在键盘上将这些数字附加到字母上,并将这些字符串的可能组合放入查找单词的方法中,并返回这些单词的链接列表。
无法解决方法中的return语句。
public LinkedList bfs_search(String numberEntered) {
//use a queue for all the unsearched combinations to go
Queue<String> q = new LinkedList<String>();
q.add("");
String possibleWord = null;
//loop through each number entered
for(int i = 0; i < numberEntered.length(); i++) {
//get the letters on the keypad for current number
String lettersOnKeypadNumber = T9keypad[numberEntered.charAt(i) - ASCII_ZERO];
int len = q.size();
//loop while there are letter sequences in the queue. Note len-- is same as len=len-1 so loop until only one item left in queue (the blank item inserted above)
while(len -- > 0) {
String letterSequenceFromQ = q.remove();
//loop through each letter on the keypad number, add it to the letter sequence pulled from queue and search for that letter sequence as a word in the trie
for(int j = 0; j < lettersOnKeypadNumber.length(); j++) {
possibleWord = letterSequenceFromQ + lettersOnKeypadNumber.charAt(j);
//q.add(tmpStr);
if(search(possibleWord) && possibleWord.length() == numberEntered.length()) {
//found it!
return possibleWords(possibleWord);
} else {
//letter sequence is not a word, add it to the queue for possible word when get the next set of letters for the next keyed number
q.add(possibleWord);
}
}
}
}
return null;
}
答案 0 :(得分:1)
您的方法签名是合同 - 您将返回链接列表。在这种情况下,你需要做两件事之一 - 返回一个链表,空或不,或抛出异常,如果真的是必须有一个链接列表&gt; 0项。
q.add(“”)对你没有任何作用,除了可以使用len--作为循环条件。使用q.isEmpty作为控件:您要么离开循环,要么将字符串添加到队列中。
由于您要在if子句中结束循环,请从q.add周围删除else {}
如果你真的打算从三重嵌套循环返回,只需抛出异常并在调用函数中处理它。否则,将possibleWords()返回的值赋给本地引用,并返回该值。
通过使用单字符变量,你不会让生活变得更轻松,但这是一个主观的事情:)
答案 1 :(得分:0)
您可以在for循环后添加return语句