为什么 getter 方法不 return 任何对象的属性?
Why getter method doesn't return any object's attribute?
我的程序应该return 两个不同对象的不同属性。在我的主要方法中,我在创建新对象时将这些属性设置为参数。但是当我调用那些 getter 方法时(我已经在单独的 class 中编写了这些方法,如果需要,我可以 post 那 class),它不会 return 所有属性.它只打印出第一个属性(也被设置为第一个参数),而不是其他两个值。不知道哪里做错了
我的代码:主要class:
package main;
public class Main {
public static void main(String[] args) {
//creating object for book 1
Book book1 = new Book("The brief history of time", "111", new String[]{"S. hawking", "hawking's friends"});
//creating object for book 2
Book book2 = new Book("100 years of solitude", "222", new String[]{"G.marquez", "marquez's friend"});
System.out.println("All info for the first book: \n");
System.out.println("Name: " + book1.getName());
System.out.println("ISBN: " + book1.getIsbn());
System.out.println("Authors: " + book1.getAuthors());
System.out.println("\n\n");
System.out.println("All info for the second book: \n");
System.out.println("Name: " + book2.getName());
System.out.println("ISBN: " + book2.getIsbn());
System.out.println("Authors: " + book2.getAuthors());
}
}
图书class:
package main;
public class Book {
//variables
private String name;
private String isbn;
private String[] authors;
//constructors
public Book(String name, String isbn, String[] authors) {
this.name = name;
this.isbn = name;
this.authors = authors;
}
//setters
public void setName(String name) {
this.name = name;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public void setAuthors(String[] authors) {
this.authors = authors;
}
//getters
public String getName() {
return name;
}
public String getIsbn() {
return isbn;
}
public String[] getAuthors() {
return authors;
}
}
您需要迭代 authors
数组才能打印其中的字符串。像这样:
System.out.println("All info for the first book: \n");
System.out.println("Name: " + book1.getName());
System.out.println("ISBN: " + book1.getIsbn());
for (String author : book1.getAuthors()) {
System.out.println("Author: " + author);
}
你的 Book
class 构造函数也有问题:
public Book(String name, String isbn, String[] authors) {
this.name = name;
this.isbn = name; // this.isbn is not name!
this.authors = authors;
}
必须是:
public Book(String name, String isbn, String[] authors) {
this.name = name;
this.isbn = isbn;
this.authors = authors;
}
当你想打印一个字符串数组时,你可以使用这个。
System.out.println(Arrays.toString(book1.getAuthors()));
Book 构造函数有问题:
public Book(String name, String isbn, String[] authors) {
this.name = name;
this.isbn = name; // you are setting isbn as name!
this.authors = authors;
}
我认为您需要定义 getAuthors 打印作者数组的方式,例如 What's the simplest way to print a Java array?
我的程序应该return 两个不同对象的不同属性。在我的主要方法中,我在创建新对象时将这些属性设置为参数。但是当我调用那些 getter 方法时(我已经在单独的 class 中编写了这些方法,如果需要,我可以 post 那 class),它不会 return 所有属性.它只打印出第一个属性(也被设置为第一个参数),而不是其他两个值。不知道哪里做错了
我的代码:主要class:
package main;
public class Main {
public static void main(String[] args) {
//creating object for book 1
Book book1 = new Book("The brief history of time", "111", new String[]{"S. hawking", "hawking's friends"});
//creating object for book 2
Book book2 = new Book("100 years of solitude", "222", new String[]{"G.marquez", "marquez's friend"});
System.out.println("All info for the first book: \n");
System.out.println("Name: " + book1.getName());
System.out.println("ISBN: " + book1.getIsbn());
System.out.println("Authors: " + book1.getAuthors());
System.out.println("\n\n");
System.out.println("All info for the second book: \n");
System.out.println("Name: " + book2.getName());
System.out.println("ISBN: " + book2.getIsbn());
System.out.println("Authors: " + book2.getAuthors());
}
}
图书class:
package main;
public class Book {
//variables
private String name;
private String isbn;
private String[] authors;
//constructors
public Book(String name, String isbn, String[] authors) {
this.name = name;
this.isbn = name;
this.authors = authors;
}
//setters
public void setName(String name) {
this.name = name;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public void setAuthors(String[] authors) {
this.authors = authors;
}
//getters
public String getName() {
return name;
}
public String getIsbn() {
return isbn;
}
public String[] getAuthors() {
return authors;
}
}
您需要迭代 authors
数组才能打印其中的字符串。像这样:
System.out.println("All info for the first book: \n");
System.out.println("Name: " + book1.getName());
System.out.println("ISBN: " + book1.getIsbn());
for (String author : book1.getAuthors()) {
System.out.println("Author: " + author);
}
你的 Book
class 构造函数也有问题:
public Book(String name, String isbn, String[] authors) {
this.name = name;
this.isbn = name; // this.isbn is not name!
this.authors = authors;
}
必须是:
public Book(String name, String isbn, String[] authors) {
this.name = name;
this.isbn = isbn;
this.authors = authors;
}
当你想打印一个字符串数组时,你可以使用这个。
System.out.println(Arrays.toString(book1.getAuthors()));
Book 构造函数有问题:
public Book(String name, String isbn, String[] authors) { this.name = name; this.isbn = name; // you are setting isbn as name! this.authors = authors; }
我认为您需要定义 getAuthors 打印作者数组的方式,例如 What's the simplest way to print a Java array?