如何在主类中从另一个类的构造函数初始化一个Array字段?

时间:2015-10-22 17:57:09

标签: java arrays class methods constructor

对不起,如果这是一个愚蠢的问题,或者如果我没说错,我会尽力解释问题所在。

我应该创建一个书类,用于存储书名,ISBN,价格和作者姓名。由于一本书可能有多个作者,我应该为这个字段创建一个Array或ArrayList。一切似乎都运行正常但是当我将Array字段初始化为String时,IDE会显示错误。我在这里错过了什么吗?有谁知道如何解决这个问题?

这是我的代码:

public class Books {
private String bookName;
private String ISBN;
private int price;
private String [] authorsList;

public Books (String bookName, String ISBN, int price, String[] authorsList){
    this.bookName = bookName;
    this.ISBN = ISBN;
    this.price = price;
    this.authorsList = authorsList;
}

public String toString(){
    return "Book title: " + bookName +
           "\nISBN: " + ISBN + 
           "\nPrice: " + price +
           "\nAuthor: " + authorsList;  
}

}

public static void main(String[] args) {          

    Books book1 = new Books("Harry Potter","12345",10,"J. K. Rowling");

    System.out.println(book1.toString());
}

}

2 个答案:

答案 0 :(得分:1)

如果您编写System.out.println,就可以看到数组

  System.out.println(book1.bookName + "\n" + book1.ISBN+"\n" + book1.price+"\n" +  Arrays.toString(authorsList));

你现在看不到它,因为它是一个数组,如果你这样写System.out.println(book1.toString());,java只显示它的位置。这就是为什么你看到这样的东西[Ljava.lang.String; @ 2a139a55

或者请将你的toString方法改为现在显示 实际上这种方式更好:

public String toString(){
    return "Book title: " + bookName +
           "\nISBN: " + ISBN + 
           "\nPrice: " + price +
           "\nAuthor: " + Arrays.toString(authorsList);  
}
public static void main(String[] args) {          
    Books book1 = new Books("Harry Potter","12345", 10, new String[]{"J. K. Rowling"});
    System.out.println(book1.toString()); 
}

答案 1 :(得分:0)

用它来初始化你的数组:

new String[]{"J. K. Rowling"};

您在构造函数中传递String而不是Array。