Ошибка цикла Foreach ... для типа не определено - PullRequest
1 голос
/ 23 августа 2011

Я пытаюсь сделать цикл foreach с ArrayList ... вот история ...

У меня есть 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 ]

4 голосов
/ 23 августа 2011
  1. Вам необходимо изменить 'example song' на "example song"

  2. И вы можете изменить

    public Boolean findAlbumByName
    

    до

    public boolean findAlbumByName
           ^
    
  3. Другой способ написания condition == false - отрицать условие, например !condition.


Здесь - пример реализации, если вы все еще застряли.

2 голосов
/ 23 августа 2011

The method findAlbumByName(ArrayList<Album>, String) is undefined for the type Album означает, что вы пытаетесь вызвать метод из класса Album, даже если вы не определили метод для этого класса. Чтобы ваш код работал, вам нужно сделать две вещи:

  1. Переместить метод в класс Album (если он там и есть)
  2. Измените строку так, чтобы она использовала двойные кавычки ("), а не одинарные кавычки (').

Как только вы это сделаете, ваш метод должен работать нормально.

0 голосов
/ 24 августа 2011

Может быть, с полным кодом было бы проще .. Кстати, учитывая, что ваша функция реализует сценарий использования (т. Е. Это общая функция, которая не вызывается ни в одном экземпляре класса Album в частности), не должнаstatic ??

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

Кроме того, вы рассматривали возможность использования boolean contains(Object elem) ArrayList?Не забудьте переопределить boolean equals(Object o)' in Almbum`, хотя !!

0 голосов
/ 23 августа 2011
 if ( ! findAlbumByName(coll, 'example song') )
  {


  }
0 голосов
/ 23 августа 2011
public Boolean findAlbumByName(ArrayList<Album> albumList, String name)

должно быть (обратите внимание на строчные буквы)

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

и назовите его следующим образом (обратите внимание, что в строке указываются двойные кавычки - одинарная кавычка для типов символов): -

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

Также вам следует рассмотреть возможность использования интерфейса с левой стороны в объявлении ArrayList. Пример:

List<Album> coll = new ArrayList<Album>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...