【问题标题】:How to call a value from another class with 3 java classes [duplicate]如何使用 3 个 java 类从另一个类调用值 [重复]
【发布时间】:2021-12-05 08:32:41
【问题描述】:

我有 3 个名为 Author、Book 和 DisplayBook 的 java 类。 Author 类用于设置作者的姓名。 Book 类用于获取图书的详细信息(标题、作者、价格),DisplayBook 用于在控制台窗口中显示输出(标题、作者、价格)。

这是我到目前为止所做的,但它为作者显示了一个随机文本 (Author@2f2c9b19)。这些是我的代码以及各自的 set 和 get 方法。

作者类

private String firstName;
private String lastName;

public Author(String fname, String lname) 
{
   firstName = fname;
   lastName = lname;
}

图书课

private String title;
private Author author;
private double price;

public Book(String bTitle, Author bAuthor, double bPrice) 
{
   title = bTitle;
   author = bAuthor;
   price = bPrice;
}

public void printBook()
{   
   System.out.print("Title: " + title + "\nAuthor: " + author + "\nPrice: " + price);   
}

DisplayBook 类

public static void main(String[] args) {
   Author author = new Author("Jonathan", "Rod");
   Book book = new Book("My First Book", author, 35.60);
   book.printBook();
}

这是输出

如何让Jonathan Rod 显示在Author: 旁边?

【问题讨论】:

标签: java instantiation return-type


【解决方案1】:

重写 Author 类的 toString 方法。或许是这样:

public String toString() {
    return this.lastName +", "+ this.firstName;
}

【讨论】:

    【解决方案2】:

    它显示 Author@2f2c9b19 的原因是因为当您将整个对象传递给打印时,Java 会显示该对象的内存地址。

    你的印刷书应该是这样的,

    public void printBook()
       {   
          System.out.print("Title: " + title + "\nAuthor Name: " + author.firstName + " " + author.lastName + \nPrice: " + 
       price);   
       }
    

    【讨论】:

      【解决方案3】:

      每当您打印任何对象时,它都会调用 toString 方法。在这里,您没有得到理想的输出,因为它在 Author 上调用 toString,这在您的类中没有被覆盖。 请重写 Author 类中的 toString 方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-15
        • 1970-01-01
        相关资源
        最近更新 更多