Foreach循环错误...未定义类型

时间:2011-08-23 19:38:21

标签: java foreach

我正在尝试使用ArrayList进行foreach循环...这是故事......

我有一个ArrayList:

     ArrayList<Album> coll = new ArrayList<Album>();

这包含有关构成收藏/图书馆的多张专辑的信息......

Album类包含一个以字符串形式返回相册名称的方法。

我基本上试图通过foreach循环来确定相册是否已经存在。

我有这个方法:

    public Boolean findAlbumByName(ArrayList<Album> albumList, String name){
        for (Album album : albumList)
        {
            if (album.getName().equals(name))
            {
                return true;
            }
        }
        return false;
    }

当我尝试执行此声明时会出现问题:

      if(findAlbumByName(coll, 'example song') == false)
      {
         // code here
      } 

它的错误内容为:The method findAlbumByName(ArrayList<Album>, String) is undefined for the type Album.

任何帮助或线索都将受到高度赞赏。谢谢。

5 个答案:

答案 0 :(得分:4)

  1. 您需要将'example song'更改为"example song"

  2. 您可能想要更改

    public Boolean findAlbumByName
    

    public boolean findAlbumByName
           ^
    
  3. 撰写condition == false的另一种方式是否定条件,例如!condition


  4. Here是一个示例实现,如果你仍然卡住了。

答案 1 :(得分:2)

The method findAlbumByName(ArrayList<Album>, String) is undefined for the type Album表示您尝试从Album类调用该方法,即使您尚未在该类上定义该方法。要使代码工作,您需要做两件事:

  1. 将方法移动到Album类(如果它属于它)
  2. 更改字符串,使其使用双引号(")而不是单引号(')。
  3. 一旦你这样做,你的方法应该可以正常工作。

答案 2 :(得分:0)

public Boolean findAlbumByName(ArrayList<Album> albumList, String name)

应该是(注意小写布尔值)

public boolean findAlbumByName(ArrayList<Album> albumList, String name)

并以这种方式调用(通知用双引号限定字符串 - 单引号用于char类型): -

if(!findAlbumByName(coll, "example song"))

另外,您应该考虑在ArrayList声明的左侧使用接口。例如:

List<Album> coll = new ArrayList<Album>();

答案 3 :(得分:0)

也许使用完整的代码会更容易..顺便说一下,假设你的函数实现了一个用例(即它是一个通用函数,特别是它没有在类Album的任何实例上调用),那就不应该是static ??

`public static boolean findAlbumByName(ArrayList albumList,String name);

另外,您是否考虑过使用ArrayList的boolean contains(Object elem)?请记得覆盖boolean equals(Object o)' in Almbum` !!

答案 4 :(得分:-2)

 if ( ! findAlbumByName(coll, 'example song') )
  {


  }