Java 如何打印来自其他类的toString

Java 如何打印来自其他类的toString,java,Java,我试图在对话框中打印书名和isbn。 我对java相当陌生,我的toString()无法工作,我需要帮助 public class Book { private String title; private String author; private String isbn; private Double price; private Publisher publisher; public Bo

我试图在对话框中打印书名和isbn。 我对java相当陌生,我的
toString()
无法工作,我需要帮助

  public class Book
    {
        private String title;
        private String author;
        private String isbn;
        private Double price;
        private Publisher publisher;

    public Book()
    {
        setTitle("");
        setAuthor("");
        setIsbn("");
        setPrice(0.0);
        setPublisher(new Publisher());
    }

    public Book(String t, String a, String i, double p, Publisher n)
    {

        setTitle(t);
        setAuthor(a);
        setIsbn(i);
        setPrice(p);
        setPublisher(n);
    }

    public void setTitle(String t)
    {
        title = t;
    }

    public String getTitle()
    {
        return title;
    }

    public void setAuthor(String a)
    {
        author = a;
    }

    public String getAuthor()
    {
        return author;
    }

    public void setIsbn(String i)
    {
        isbn = i;
    }

    public String getIsbn()
    {
        return isbn;
    }

    public void setPrice(double p)
    {
        price = p;
    }

    public double getPrice()
    {
        return price;
    }

    public void setPublisher(Publisher n)
    {
        publisher = n;
    }

    public Publisher getPublisher()
    {
        return publisher;
    }

    public double calculateTotal(int quantity)
    {
        return(price * quantity);
    }

    public String toString()
    {
        return( "Title" + title + "Author" + author + "Isbn" + isbn
            + "Price" + price + "Publisher" + publisher.toString());
    }

}



import javax.swing. JOptionPane;

public class BookTest
{
    public static void main(String args[])
    {
        String dataArray[][] = {{"Abraham Lincoln Vampire Hunter","Grahame-Smith","978-0446563079","13.99", "Haper", "NY"},
                    {"Frankenstein","Shelley","978-0486282114","7.99","Pearson", "TX"},
                    {"Dracula","Stoker","978-0486411095","5.99","Double Day", "CA"},
                    {"Curse of the Wolfman"," Hageman","B00381AKHG","10.59","Harper", "NY"},
                    {"The Mummy","Rice","978-0345369949","7.99","Nelson", "GA"}}; //book info




        Book bookArray[] = new Book[dataArray.length];

        int quantityArray[] = {12, 3, 7, 23, 5};

        for (int i = 0; i < dataArray.length; i++)
        {
            bookArray[i] = new Book(dataArray[i][0], dataArray[i][1], dataArray[i][2], 
                Double.parseDouble(dataArray[i][3]), new Publisher(dataArray[i][4], dataArray[i][5]));
        }


        for (int i = 0; i < bookArray.length; i++)
        {
            bookArray[i].calculateTotal(quantityArray[i]);



        }


            JOptionPane.showMessageDialog(null, Book.toString());

    }




}
公共课堂教材
{
私有字符串标题;
私有字符串作者;
专用字符串isbn;
私人双价;
私营出版商;
公共书籍()
{
片名(“”);
作者(“”);
setIsbn(“”);
设定价格(0.0);
setPublisher(newpublisher());
}
公共图书(字符串t、字符串a、字符串i、双p、出版商n)
{
片名(t);
作者(a);
setIsbn(i);
设定价格(p);
setPublisher(n);
}
公共void setTitle(字符串t)
{
title=t;
}
公共字符串getTitle()
{
返回标题;
}
public void setAuthor(字符串a)
{
作者=a;
}
公共字符串getAuthor()
{
返回作者;
}
公共无效集合ISBN(字符串i)
{
isbn=i;
}
公共字符串getIsbn()
{
返回isbn;
}
公共无效设定价格(双p)
{
价格=p;
}
公开双价
{
退货价格;
}
public void setPublisher(Publisher n)
{
publisher=n;
}
公共发布服务器getPublisher()
{
返回出版商;
}
公共双计算总计(整数数量)
{
退货(价格*数量);
}
公共字符串toString()
{
返回(“标题”+标题+“作者”+作者+“Isbn”+Isbn
+“Price”+Price+“Publisher”+Publisher.toString());
}
}
导入javax.swing。JOptionPane;
公开课图书考试
{
公共静态void main(字符串参数[])
{
字符串数据数组[][]={{“亚伯拉罕·林肯吸血鬼猎人”、“格雷厄姆·史密斯”、“978-0446563079”、“13.99”、“哈珀”、“纽约”},
{“弗兰肯斯坦”、“雪莱”、“978-0486282114”、“7.99”、“皮尔逊”、“德克萨斯州”},
{“德古拉”、“斯托克”、“978-0486411095”、“5.99”、“双日”、“CA”},
{“狼人的诅咒”、“哈格曼”、“B00381AKHG”、“10.59”、“哈珀”、“纽约”},
{“木乃伊”、“赖斯”、“978-0345369949”、“7.99”、“纳尔逊”、“GA”};//图书信息
Book bookArray[]=新书[dataArray.length];
int quantityArray[]={12,3,7,23,5};
for(int i=0;i
当您通过类的名称而不是引用该类实例的变量来限定该方法时,您正试图调用类书上名为toString的静态方法。Book类中没有定义这样的方法

相反,您应该调用book实例上的toString(),例如bookArray中的实例

例如,下面是在循环内部调用的toString:

    for (int i = 0; i < bookArray.length; i++)
    {
        Book b = bookArray[i];
        b.calculateTotal(quantityArray[i]);
        //Using JOptionPane.showMessageDialog here only for an example, this probably isn't the OPs intent
        JOptionPane.showMessageDialog(null, b.toString();); 
    }
for(int i=0;i
有关静态如何工作的参考,请参阅和

有关重写toString的更多信息,请参阅

JOptionPane.showMessageDialog(null, Book.toString());
您正试图静态调用
toString
,这在
一书中未定义


您需要从
Book
实例中调用它。

您的代码看起来很模糊

toString()的问题在下面的代码部分中

for (int i = 0; i < bookArray.length; i++)
{
    bookArray[i].calculateTotal(quantityArray[i]);
}
JOptionPane.showMessageDialog(null, Book.toString());
for(int i=0;i
当调用Book.toString()时,实际上是从类Book调用方法。要打印书籍内容,您应该在for循环中插入代码,并使用书籍实例

for (int i = 0; i < bookArray.length; i++)
{
    bookArray[i].calculateTotal(quantityArray[i]);
    JOptionPane.showMessageDialog(null, bookArray[i].toString());
} 
for(int i=0;i
PS:请使用IDE及其自动格式化实用程序


对于Eclipse,您可以使用Control+Shift+F对于Intellij IDEAControl+Alt+L

您所说的
无法让我的toString工作是什么意思?Clarify您正在调用
Book
上的
toString
,这是类名,但无论如何,您都试图在类型为
Book
的数组对象上调用它,意思是
bookArray[]
。您的
toString()
仅适用于
Book
的单个实例。解决方案是调用
Arrays.toString(bookArray[])