1 java
我正在从main()添加信息我正在为CD,DVD,书添加不同的信息.
我有3个单独的类 - 项目中有3个类...
项目 - 主要()
库 - 此功能完成所有添加
项目(cd,dvd,book)继承
对于音乐我正在添加乐队信息,标题信息,关键字和成员..我分别添加成员而不是其他信息..
正如您所看到的那样,成员输出不正确.
>>> music CDs:
-Music-
band: Jerry Garcia Band
# songs: 15
members: [Ljava.lang.String;@61de33
title: Don't Let Go
C:\Java\a03>
Run Code Online (Sandbox Code Playgroud)
我为成员使用相同的toString()函数,因为我是其余的,所以我不知道为什么它会这样做..
我会给你尽可能多的信息,我认为你需要看到..
Main() - 正如您所看到的,它调用了2个不同的函数.
addbandmembers是我遇到问题的地方......
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);
}
Run Code Online (Sandbox Code Playgroud)
在Library类中 - 这是addbandmember函数..
这可能是原因吗?
public void addBandMembers(Item musicCD, String... members)
{
((CD)musicCD).addband(members);
}
Run Code Online (Sandbox Code Playgroud)
在Items类中,这里是函数addband - tostring()
这是扩展items类的CD类.
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());
}
}
Run Code Online (Sandbox Code Playgroud)
我在items类中确实有其他信息,比如我没有展示的角落类,电影类.我想按照我设置的方式保留所有内容..
那么,如果其他项目的打印效果可能比addbandmember函数中的强制转换功能给我带来了问题呢?
members正在打印它的方式,因为它是一个数组(你可以通过它的输出作为成员来说明这一点:[Ljava.lang.String; @ 61de33).
相反,您需要遍历它并打印每个元素.
例如
for (String member : members) {
...
}
Run Code Online (Sandbox Code Playgroud)
最简单的方法是使用Arrays.toString().或者附加到a StringBuilder然后打印到此.您可以更聪明,并使用来自Apache Commons Lang的StringUtils.join(),这将为您提供更多控制.
| 归档时间: |
|
| 查看次数: |
469 次 |
| 最近记录: |