对象没有返回我认为应该是的东西

时间:2014-10-28 19:44:35

标签: java

好的,所以我们必须创建一个书架,并在一个单独的文件上预订具有发布者,作者,版权日期等的对象(基本上为驱动程序类创建一个对象)。我本周已经两次重做这个并且仍然得到同样的错误。也许有人可以指出我正确的方向?也许我错过了一些东西,我不确定。编辑:问题是:对不起我准备工作并超越自己我有三个:首先输出给我:预订@ 15db9742预订@ 6d06d69c然后今年的书类是红色说转换从一个字符串到一个int所以我这样做,它想要回到另一个方向

    public class Book {
    private String title;
    private String author;
    private String publisher;
    private int copyDate;

    public Book(String bookTitle, String authorName, String publisherName, int bookYear){
        title = bookTitle;
        author = authorName;
        publisher = publisherName;
        copyDate = bookYear;

    }

    public Book(){
        title = "book titler";
        author = "author name";
        publisher = "book publisher";
        copyDate = "2014";


    }

    public String getTitle() {
        return title;
    }

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

    public String getAuthor() {
        return author;
    }

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

    public String getPublisher() {
        return publisher;
    }

    public void setPublisher(String publisherName) {
        publisher = publisherName;
    }

    public int getCopyDate() {
        return copyDate;
    }

    public void setCopyDate(int copyDate) {
        this.copyDate = copyDate;
    }


}

这是主要课程:

public class BookShelf {

    public static void main(String[] args) {

        int bookYear = 2014;
        Book name1 = new Book("book\n", "something\n", "something else\n", bookYear);
        Book name2 = new Book("anotherBook\n", "anotherSomething\n", "somethingElse^2\n", bookYear);

        System.out.println(name1);
        System.out.println(name2);
    }

}

我输入了任意信息,所以我可以确保它在我搜索好书之前输入lol的信息。

谢谢!

2 个答案:

答案 0 :(得分:6)

我认为您需要覆盖toString()方法,以便System.out.println()打印您想要的书籍对象信息。

默认情况下,Object的toString()不会打印任何字段,而是打印:

  

类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@”和对象的哈希码的无符号十六进制表示组成。换句话说,此方法返回一个等于值的字符串:

How to use the toString method in Java?

这个方法会进入类中(每个类都有自己的`toString()实现)

class Book{
   ...
   @Override
   public String toString(){
       //feel free to change this sting to whatever you want
       return "Book " + title;
   }

}

另外作为Andreas Jabusch的另一个答案,你的构造函数错误地设置了copyDate。它应该是一个int

copyDate = 2014

删除使其成为字符串的引号。

答案 1 :(得分:0)

你的

copyDate = "2014"

必须是

copyDate = 2014

它是一个int,而不是一个String。