Java要求返回声明,但我正在返回“某事”

时间:2012-03-13 04:08:24

标签: java

所以我有一个简单的方法,它接受两个输入字符串和一个数组字符串列表。我尝试在给定的数组列表中搜索给定的字符串,如果找到它我将返回它,如果不是,我返回一个声明说它没有找到 这是我的代码:

String findWord(String word, ArrayList<String> list){
    for(int i=0; i<list.size(); i++)
        if(word.equals(list.get(i)))
            return word;
        else
            return "Word not found";
}

我也尝试过:

String findWord(String word, ArrayList<String> list){
    String myString = null;
    for(int i=0; i<list.size(); i++)
        if(word.equals(list.get(i)))
            myString= word;
        else
            myString = "Word not found";
    return myString;
}

但返回值始终为null。

5 个答案:

答案 0 :(得分:7)

尝试,

String findWord (String word, ArrayList<String> list) {
   for (int i = 0; i < list.size(); i++) {
      if (word.equals (list.get (i))) {
          return list.get (i);
      }
   }
   return "Word not found";
 }

答案 1 :(得分:3)

不要这样做,请尝试:list.contains(yourString);如果列表包含您的字符串,它将返回true。

答案 2 :(得分:2)

列表必须为空,否则不会通过if / else。

您可以将方法简化为

String findWord(String word, ArrayList<String> list) {
    return list.contains(word) ? word : "Word not found";
}

答案 3 :(得分:0)

编译器知道for循环可以有0次迭代,并且不会接受你在for循环之后没有指定return语句,以支持循环为空的情况。

答案 4 :(得分:0)

无论如何,你不会被允许编译第一个。(如果列表大小为0,它将返回任何内容,尽管返回类型为“String”)。第二,我做了一点修改。否则,如果在列表ArrayList中匹配一次之后没有匹配的单词,则会返回“未找到字”。获得null的唯一情况是列表为空。

String findWord(String word, ArrayList<String> list){
   for(int i=0; i<list.size(); i++)
      if(null != word && word.equals(list.get(i)))
         return word;
   return "Word not found";
}

无论如何,如果你像Delfino Gomes所说的那样使用list.contains(Word),它会非常有效。