java - for-each 循环内的 if-else

标签 java loops if-statement foreach

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

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 {
    ...
}

关于java - for-each 循环内的 if-else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551132/

相关文章:

java - 在 Java 中,在发送 JSON POST 时使用 HttpPost(apache commons HttpClient)——我应该对正文进行 URL 编码吗?

java - 使用 JAVA 连接到 JIRA REST API 时握手失败

r - 如何在 R 中构建一次汇总多个值的表

sql - 如何从 SQL Server 中的字符串中删除最后一个符号。如果它是一个循环

java - Eclipse 3.5(和更高版本)切换选项卡非常慢

java - Spring 3.1 的 Jackson 1.9 配置(全局设置日期格式)

c++ - 为什么相似的代码具有不同的运行时和内存使用率?

javascript - javascript if 和 else 的问题

带有 IF 语句的 MySQL VIEW

javascript - 取消选中复选框时返回初始状态