一直在关注这个(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模块中写些什么?
-
其中一个非常简单,用于描述
author
类。它有三个属性:private String name;private String email;private String gender;
——已经测试过的文件。一切都很好。 -
描述这本书的图书档案。一本书可以有多个作者。
公共类书籍{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;}}
-
第三个文件测试前两个文件中编码的所有方法。
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分隔