Java: не могу найти символ (конструктор) - PullRequest
2 голосов
/ 17 февраля 2012

новичок делает домашнее задание на Java здесь.У меня есть один класс с именем Album, который содержит следующие конструкторы:

public class Album {

    private String title;
    private String artist;
    private String genre;
    private Song favoriteTrack;
    private int trackNumber;
    private static int numAlbums;

    //Constructors
    public Album(String title, Song favoriteTrack, int trackNumber) {
        this.title = title;
        this.favoriteTrack = favoriteTrack;
        this.trackNumber = trackNumber;
        artist = favoriteTrack.getArtist();
        genre = favoriteTrack.getGenre();
        numAlbums++;
    }

    public Album(String title, Song favoriteTrack) {
        this(title, favoriteTrack, 1);
    }
...}

А затем у меня есть второй класс MusicCollection, который трижды создает экземпляр класса Album в своем основном методе ...

public static void main (String[] args) {...

    Album album1 = new Album("Debut", "Venus as a Boy", 3);
    Album album2 = new Album("Homework", "Around the World", 7);
    Album album3 = new Album("Ghost in the Machine", "Invisible Sun", 3);
    ...}

Однако, когда я пытаюсь скомпилировать MusicCollection.java, я получаю сообщение об ошибке:

cannot find symbol
symbol : constructor Album(java.lang.String,java.lang.String,int)
location : class Album

каждый раз, когда я пытаюсь вызвать конструктор.Классы Album и MusicCollection находятся в одном каталоге, а Album.java компилируется.Я представляю, что делаю что-то глупое, но я не могу понять это.Любая помощь будет высоко ценится!

Ответы [ 4 ]

6 голосов
/ 17 февраля 2012

Второй аргумент определенного вами конструктора - Song, а не String, но в вашем main вы пытаетесь создать его экземпляр с String в качестве второго аргумента.

1 голос
/ 17 февраля 2012

Что сказал Биньямин!Если у вас есть класс песни, вам нужно сказать что-то вроде new Album("Debut", new Song("venus as a boy"), 3); в зависимости от того, как работает ваш класс песни, если нет, измените песню на тип строки

1 голос
/ 17 февраля 2012

Вы передаете String второму аргументу конструктора Album, когда вы объявили, что он должен получить экземпляр Song.

0 голосов
/ 17 февраля 2012

Вы пытаетесь создать экземпляр Album с двумя строками, а не строкой и некоторым классом Song, возможно, вам следует изменить конструктор на

public Album(String title, String favoriteTrack, int trackNumber) {
    this.title = title;
    this.favoriteTrack = favoriteTrack;
    this.trackNumber = trackNumber;
    artist = favoriteTrack.getArtist();
    genre = favoriteTrack.getGenre();
    numAlbums++;
}

или сделать это:

new Album("Debut", new Song("Venus as a boy"), 3);

или, однако, композиция создана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...