有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

向集合中添加toString()的java帮助

我正在从main()添加信息 我正在为CD、DVD、书添加不同的信息

我有3个独立的类-项目中有3个类

  1. project-main()

  2. 库-此函数执行所有添加操作

  3. 项目(cd、dvd、书籍)继承

对于音乐,我添加了乐队信息、标题信息、关键词和成员。。 我添加的成员与其他信息不同

正如你所看到的,这些成员没有像其他成员一样输出正确

>>> music CDs:

-Music-
band: Jerry Garcia Band
# songs: 15
members: [Ljava.lang.String;@61de33
title: Don't Let Go

C:\Java\a03>

我对成员使用的toString()函数与其他成员相同,所以我不确定它为什么会这样做

我会给你我认为你需要看到的尽可能多的信息

Main()-如您所见,它调用了两个不同的函数

AddBand成员是我遇到问题的地方

out.println(">>> adding items to library:\n");
item = library.addMusicCD("Europe In '72", "Grateful Dead", 12, "acid rock", "sixties", "jam bands");
    if (item != null) {
        library.addBandMembers(item, "Jerry Garcia", "Bill Kreutzman", "Keith Godcheaux");
        library.printItem(out, item);
        }

在Library类中,这里是addbandmember函数

这可能是原因吗

public void addBandMembers(Item musicCD, String... members)
{

    ((CD)musicCD).addband(members);

}

在Items类中,函数addband-tostring()

下面是CD类,它扩展了items类

class Item
{
    private String title;

    public String toString()
    {
        String line1 = "title: " + title + "\n";
        return line1;
    }

    public void print()
    {
        System.out.println(toString());
    }

    public Item()
    {}

    public Item(String theTitle)
    {
        title = theTitle;
    }

    public String getTitle()
    {
        return title;
    }
}

class CD extends Item
{
    private String artist;
    private String [] members;
    private int number;

    public CD(String theTitle, String theBand, int Snumber, String... keywords)
    {
        super(theTitle);
        this.artist = theBand;
        this.number = Snumber;
    }

    public void addband(String... member)
    {
        this.members = member;
    }

    public String getArtist()
    {
        return artist;
    }

    public String [] getMembers()
    {
        return members;   
    }

    public String toString()
    {
        return  "-Music-" + "\n" + "band: " + artist + "\n" + "# songs: " + number + "\n" + "members: " + members + "\n"  + "\n" + super.toString() + "\n";
    }

    public void print()
    {
        System.out.println(toString());
    }
}

在items类中,我确实有其他信息,比如nook类,movie类,但我没有展示。我想把一切都保持原样

所以,如果其他项目的打印比可能是在addbandmember函数中的演员阵容给我带来了问题


共 (1) 个答案

  1. # 1 楼答案

    数组没有有用的toString()实现。您可以打印循环中的成员,也可以使用Arrays.toString()方法为您执行以下操作:

    return "-Music-" + "\n"
        + "band: " + artist + "\n"
        + "# songs: " + number + "\n"
        + "members: " + Arrays.toString(members) + "\n"
        + "\n"
        + super.toString() + "\n";