我是编程新手。我有这段代码:

public void findFilm ( String nameofFilm ) {
   int index = -1;
   int i = 0;
   for( Film aFilm : list ) {
      if( aFilm.gettitle().equals( nameofFilm )) {
         index = i;
         i++;
         break ;
      }
   }
   if( index >= 0 ) {
      aFilm.print();
   }
   else {
      System.out.println(
         "The film " + nameofFilm + " does not belong to the collection" );
      }
   }


更具体地说,我想搜索列表,查找其中是否包含与我插入的名称相同的电影。有任何想法吗 ?非常感谢。

最佳答案

aFilm变量在for循环中定义。因此,其范围仅限于循环,并且该变量不能在循环之外使用。您可以这样重写循环:

Film foundFilm = null;
for (Film aFilm : films) {
    if (aFilm.getTitle().equals(nameOfFilm)) {
        foundFilm = aFilm;
        break;
    }
}
if (foundFilm == null) {
    ...
}
else {
    ...
}


不需要任何索引或递增计数器。

并且,为使代码更清晰,您可以将第一部分提取到其自己的方法中,然后像这样重写它:

Film foundFilm = findFilmByTitle(films, filmTitle);
if (foundFilm == null) {
    ...
}
else {
    ...
}

09-27 19:48