Author和Book类A-在java中作为实例变量的对象数组.获取"阵列对象"属性



一直在关注这个(https://www3.ntu.edu.sg/home/ehchua/programming/java/J3f_OOPExercises.html#zz-2.2(研究java面向对象程序。有三个java文件。现在我测试了public Author getauthors() {return authors[0]}将返回第一个完整的作者:姓名、电子邮件和性别。但我想迭代authors数组,只获取所有的author名称我应该在Booksjava模块中写些什么?

  1. 其中一个非常简单,用于描述author类。它有三个属性:private String name;private String email;private String gender;——已经测试过的文件。一切都很好。

  2. 描述这本书的图书档案。一本书可以有多个作者。

    公共类书籍{private字符串名称;私有int数量;私人双倍价格;作者[];

    public Book(String name, int qty, double price) {
    this.name = name; this.qty = qty; this.price = price;}
    public Book(String name, Author authors[], int qty, double price) {
    this.name = name; this.authors = authors;this.qty = qty; this.price = price;}
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
    public double getPrice() {return price;}
    public void setPrice(double price) {this.price = price;}
    public int getQty() {return qty;}
    public void setQty(int qty) {this.qty =qty;}
    public void setauthor(Author[] author) {this.authors = authors;}}
    
  3. 第三个文件测试前两个文件中编码的所有方法。

    public class testauthor {
    public static void main(String[] args) {
    Author[] authorstest = new Author[2];
    authorstest[0] = new Author("Tan Ah Teck", "ahteck@nowhere.com", "m");
    authorstest[1] = new Author("Tyler Cowen", "tcowen@gmu.edu", "M");           
    Book dummyBook = new Book("small steps toward a much better world",authorstest, 19, 99);System.out.println(dummyBook.getName());}}
    

如果你想返回所有作者的名字,你必须在这里做出选择:

  • 要么返回一个String[],其中每个元素都是其中一个作者的名称;

  • 或者您返回一个String,其中列出了作者,比如说,中间用逗号。例如:J. He, J. Skeet, M. C. Emperor

    你可以使用for循环:

    String authorsText = "";
    for (int i = 0; i < authors.length; i++) {
    if (i > 0) {
    authorsText += ", ";
    }
    authorsText += authors[i].getName();
    }
    

进一步:

  • 你可以在构建后设置一本书的作者,这有点奇怪。一本书出版后,作者是否发生过变化?书名也是如此。我会去掉那些二传手,因为它们对我来说没有意义

您可以使用获取所有名称:

Arrays.stream(authors).map(a->a.getName()).collect(Collectors.joining(","));

这将获取所有名称并用coma分隔

相关内容

  • 没有找到相关文章