尝试创建一个包含另一个类中的对象的类

卡拉斯:

我创建了一个名为Album的类,这是一个类:

public class Album {

    private String Titulo;
    private int temas;
    private int ano;

    public Album(String Titulo2, int temas2, int ano2) {
        this.Titulo = Titulo2;
        this.temas = temas2;
        this.ano = ano2;
    }

    public Album(String Titulo2, int temas2) {
        this.Titulo = Titulo2;
        this.temas = temas2;
    }

    public int getAno() {
        return this.ano;
    }

    public int getTemas() {
        return this.temas;
    }

    public String getTitulo() {
        return this.Titulo;
    }

    public void setAno(int ano) {
        this.ano = ano;
    }

    public boolean foiEditadoNesteSeculo() {
        if (this.ano > 2000) {
            return true;
        } else {
            return false;
        }
    }

    public void adicionaTemasBonus(int x) {
        this.temas += x;
    }

    public void mostraAlbum() {
        System.out.println(this.Titulo + " (editado em " + this.ano + "; tem " + this.temas + " temas)");
    }
}

它工作正常。问题是老师要求我创建一个新的班级Band,它必须有一系列的相册。Band对象应使用一个表示专辑数量(数组长度)限制的int声明。我已经对如何使用数组有了一些想法,但是对于如何创建一个包含另一个类的对象的数组类型,以及如何使用对象的属性返回某些东西,我还是一无所知。我想我可以在正确创建类之后弄清楚其余的部分。

抱歉,正如葡萄牙语中描述的那样,我在翻译方面没有太多经验。

Nexevis:

我认为使用a会更容易管理,List因此您可以随时添加Albums任意数量的内容,但是由于问题陈述需要Array我举了一个Band的示例

我还在main的底部包括了测试程序的方法Band

public class Band {
    private int totalAlbums;
    private Album[] albums;
    private int currentNumberOfAlbums;

    public Band(int totalAlbums) {
        this.totalAlbums = totalAlbums;
        this.albums = new Album[totalAlbums];
        this.currentNumberOfAlbums = 0;
    }

    public Band(Album[] albums) {
       this.totalAlbums = albums.length;
       this.albums = albums;
       this.currentNumberOfAlbums = this.totalAlbums;
    }

    public void addNewAlbum(String titulo, int temas, int ano) {
        if (this.currentNumberOfAlbums == totalAlbums) {
            System.out.println("Warning: Cannot add any more albums, limit reached.");
            return;
        }
        this.albums[this.currentNumberOfAlbums++] = new Album(titulo, temas, ano);

    }

   public void printAlbums() {
       for (Album a : this.albums) {
           a.mostraAlbum();
       }
   }

    public static void main(String [] args) {
        Band b = new Band(3);
        b.addNewAlbum("The First", 4, 2001);
        b.addNewAlbum("The Second", 98, 2055);
        b.addNewAlbum("The Finale", 12, 2011);
        b.addNewAlbum("The Extra", 12, 2111);

        b.printAlbums();
    }
}

在此代码中有一些需要注意的地方。

首先,要解决您的直接问题,您可以像使用任何其他类/基元一样,将自定义类简单地用作数组Album[]

其次,您将需要一个Band构造函数,构造函数Album根据传递给它的整数实例化的数组,因此您知道有多少张专辑是有限的。您可以在this.albums = new Album[totalAlbums];一行中看到它

接下来,您需要一种将新添加Album 的数组的方法Album[]可以通过几种不同的方法完成此操作,但是我选择的方法addNewAlbum(String, int, int)是为该示例创建一个执行此操作的方法currentNumberOfAlbums1每次添加新专辑时该方法也会增加。这很有用,这样您就可以知道何时Album已尝试添加an ,即使an totalAlbums已满!ArrayIndexOutOfBoundsException如果addNewAlbum调用太多时间,这将防止您的代码中出现。

最后,addNewAlbum您需要使用调用Album构造函数new Album(titulo, temas, ano)

在我的示例中main创建了一个Band具有3专辑数量限制的文件,并4尝试将专辑添加到其中,成功添加了前三个文件,未添加第四个文件,而是打印了超出限制的警告。

我还添加了printAlbums()将使用你的方法mostraAlbum()来打印每个Albumalbums排列。

输出:

Warning: Cannot add any more albums, limit reached.
The First (editado em 2001; tem 4 temas)
The Second (editado em 2055; tem 98 temas)
The Finale (editado em 2011; tem 12 temas)

编辑:

我添加了Band(Album[] albums)构造函数,可以使用以下命令调用它:

Album[] albums = new Album[3];
//Add your albums into this variable
Band b = new Band(albums);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章