如何写这个return语句所以我不返回null?

时间:2013-05-03 14:29:10

标签: java return

我不知道在哪里或如何放置我的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;          
}  

2 个答案:

答案 0 :(得分:1)

您的方法签名是合同 - 您将返回链接列表。在这种情况下,你需要做两件事之一 - 返回一个链表,空或不,或抛出异常,如果真的是必须有一个链接列表&gt; 0项。

q.add(“”)对你没有任何作用,除了可以使用len--作为循环条件。使用q.isEmpty作为控件:您要么离开循环,要么将字符串添加到队列中。

由于您要在if子句中结束循环,请从q.add周围删除else {}

如果你真的打算从三重嵌套循环返回,只需抛出异常并在调用函数中处理它。否则,将possibleWords()返回的值赋给本地引用,并返回该值。

通过使用单字符变量,你不会让生活变得更轻松,但这是一个主观的事情:)

答案 1 :(得分:0)

您可以在for循环后添加return语句