【发布时间】:2015-12-05 16:50:38
【问题描述】:
鉴于这个类:
public class Book {
private String bookName;
private String[] chapters = new String[9];
private int numberOfChapters;
public Book(String bn){
bookName = bn;
}
public Book(String b[]){
chapters = b;
}
public void addChapter(String chapter){
chapters[numberOfChapters] = chapter;
numberOfChapters++;
}
public String[] getChapter(){
return chapters;
}
public int getNumberOfChapters(){
return numberOfChapters;
}
public String getBookName(){
return bookName;
}
public String toString(){
return("Book Name: " + getBookName() + " chapters[] = " + getChapter() + " number of chapters : " + getNumberOfChapters());
}
}
我需要编写一个驱动程序来创建一个章节数组(字符串),然后将其中的每个对象分配给 Book 对象。我的问题是,当我这样做时,toString() 方法不能正确打印章节,而是返回内存地址。
这是我目前所拥有的:
public class BookTest {
public static void main(String[] args) {
String[] BookArray = new String[9];
for(int i = 0; i<BookArray.length; i++){
BookArray[i] = new String("Chap"+(i+1));
}
Book b1 = new Book("Name1");
for(int i=0; i<BookArray.length; i++){
b1.addChapter(BookArray[i]);
}
System.out.println(b1.toString());
}
}
打印出来的
Book Name: Name1 chapters[] = [Ljava.lang.String;@2a139a55 number of chapters : 9
在不更改 toString() 方法的情况下,我需要在驱动程序中进行哪些更改才能正确打印章节?
【问题讨论】:
-
使用
List<String>而不是String[]。 -
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已根据 CC BY-SA license 授予 SE 分发内容的不可撤销权利(即无论您未来的选择如何)。根据 SE 政策,分发非破坏版本。因此,任何破坏行为都将被撤销。请参阅:How does deleting work? …。如果允许删除,则帖子下方左侧有一个“删除”按钮,但仅在浏览器中,而不是移动应用程序中。