当前位置: 首页 > 知识库问答 >
问题:

无法通过Java中的构造函数初始化对象:错误编译

史同化
2023-03-14

下面的代码不断抛出以下错误:Java Error Terminal Screen Snapshot

我试过很多在线修复,但似乎都不起作用。下面是我的代码,我已经注释了错误位置(发生在驱动程序主函数中)

注意:如果我将public static void main(String args[])更改为public void main(String args[]),那么代码可以正常编译,但是当我运行它时,它会抛出错误“change main to static void main”。我有点困在这里了。

import java.util.*;
class Exercise{ //Exercise Begins
    class UtilityFunctions{
        public String getAuthor(){ return "";};
        public String  getPublisher(){return "";};
        public void display(){};
    }

class Book extends UtilityFunctions{
    private String title;
    private String author;
    private String category;
    private String datePublished;
    private String publisher;
    private double price;

    public Book(String authorParam, String publisherParam){
        author = authorParam;
        publisher = publisherParam;
    }
    //List of Setters
    public void setTitle(String title){
        this.title = title;
    }
    public void setCategory(String cat){
        this.category = cat;
    }
    public void setDatePublished(String dp){
        this.datePublished = dp;
    }
    public void setPrice(double p){
        this.price = p;
    }

    //List of Getters
    public String getTitle(){
        return this.title;
    }
    @Override
    public String getAuthor(){
        return this.author;
    }
    public String getCategory(){
        return this.category;
    }
    public String getDatePublished(){
        return this.datePublished;
    }
    @Override
    public String getPublisher(){
        return this.publisher;
    }
    public double getPrice(){
        return this.price;
    }
    @Override
    public void display(){
        System.out.println("Book Title:" + getTitle());
        System.out.println("Author:" + getAuthor());
        System.out.println("Category:" + getCategory());
        System.out.println("Date Published:" + getDatePublished());
        System.out.println("Publisher:" + getPublisher());
        System.out.println("Price:$" + getPrice());
    }
}

class Author extends UtilityFunctions{
    private String authorName;
    private String birthDate;
    private String publisher;
    private String email;
    private String gender;
    List<Book> bookList;

    public Author(String publisherParam){
        publisher = publisherParam;
    }

    public void addBook(Book b){
        bookList.add(b);
    }
    //List of Setters
    public void setName(String n){
        this.authorName = n;
    }
    public void setEmail(String em){
        this.email = em;
    }
    public void setGender(String gen){
        this.gender = gen;
    }
    public void setBirthDate(String dob){
        this.birthDate = dob;
    }
    //List of Getters
    public String getAuthor(){
        return this.authorName;
    }
    public String getPublisher(){
        return this.publisher;
    }
    public String getEmail(){
        return this.email;
    }
    public String getGender(){
        return this.gender;
    }
    public String getBirthDate(){
        return this.birthDate;
    }

    @Override
    public void display(){
        System.out.println("Author Name:" + getAuthor());
        System.out.println("Email:" + getEmail());
        System.out.println("Gender:" + getGender());
        System.out.println("BirthDate:" + getBirthDate());
        System.out.println("Publisher:" + getPublisher());

        System.out.println("BOOKS:");
        for(Book b:bookList){
            b.display();
            System.out.println();
        }
    }   

}

class Publisher extends UtilityFunctions{
    private String publisherName;
    private String publisherAddress;
    private String publisherEmail;
    private int publisherPhoneNumber;
    List<Author> authorList;

    public Publisher(String name, String add, String email,int phone){
        publisherName = name;
        publisherAddress = add;
        publisherEmail = email;
        publisherPhoneNumber = phone;
    }
    public void addAuthor(Author a){
        authorList.add(a);
    }
    //List of Getters
    public String getPublisher(){
        return this.publisherName;
    }
    public String getAddress(){
        return this.publisherAddress;
    }
    public String getEmail(){
        return this.publisherEmail;
    }
    public int getPhoneNumber(){
        return this.publisherPhoneNumber;
    }
    @Override
    public void display(){
        System.out.println("Publisher Name:" + getPublisher());
        System.out.println("Publisher Address:" + getAddress());
        System.out.println("Publisher Phone Number:" + getPhoneNumber());
        System.out.println("Publisher Email:" + getEmail());

        System.out.println("AUTHORS:");
        for(Author a:authorList){
            a.display();
            System.out.println("-------------------------------------");
        }

        System.out.println("--------------------------------------------------------------------------------");
        System.out.println("--------------------------------------------------------------------------------");

    }

}

public static void main(String args[]){
    ArrayList<Publisher> publisherList = new ArrayList<Publisher>();
    //1st ERROR HERE
    Publisher pub1 = new Publisher("Riverhead Books","8080 Cross Street","riverhead@riverheadbooks.co.uk",784646533);
    //2nd ERROR HERE
    Author author1 = new Author(pub1.getPublisher());
    author1.setName("Khaled Hosseini");
    author1.setGender("Male");
    author1.setBirthDate("1965-10-09");
    author1.setEmail("khaledhosseini@gmail.com");
    pub1.addAuthor(author1);

    //3rd ERROR HERE
    Book book1 = new Book(author1.getAuthor(),author1.getPublisher());
    book1.setTitle("Kite Runner");
    book1.setCategory("Historical-Fiction|Drama");
    book1.setPrice(39.95);
    book1.setDatePublished("2003-05-29");
    author1.addBook(book1);

    publisherList.add(pub1);
    for(Publisher p:publisherList){
        p.display();
    }
}

}//练习结束

共有1个答案

石喜
2023-03-14

你的所有类:Book、Author、Publisher、UtilityFunctions……都应该在练习类之外

Class Exercise {
  public static void main(String args[]) {...}
} // end class exercice

Class UtilityFunctions {...}
Class Book {...}
Class Author {...}
Class Publisher  {...}
 类似资料:
  • 映射对构造函数没有限制或要求 (__init__ )类的方法。您可以自由地为您想要的函数要求任何参数,为ORM未知的实例分配属性,并且通常在编写Python类的构造函数时做您通常会做的任何其他事情。 sqlAlchemy ORM不调用 __init__ 从数据库行重新创建对象时。ORM的过程有点类似于Python标准库的 pickle 模块,调用低级 __new__ 方法,然后在实例上悄悄地恢复属

  • 我已经为创建了一个堆栈扩展。 我创建了一个模板类,其代码如下: 但当我初始化它时: 它抛出以下错误: 操作员似乎有一些问题。我确实尝试创建运算符重载,但尝试失败。 错误的原因是什么?

  • 生成类对象时,其成员可以用类的构造函数初始化。构造函数是与类同名的成员函数。程序员提供的构造函数在每次生成类对象(实例化)时自动调用。构造函数可以重载.提供初始化类对象的不同方法。数据成员应在类的构造函数中初始化或在生成对象之后设置其数值。 常见编程错误 6.7 类的数据成员只能在类定义中初始化。 常见编程错误 6.8 试图声明构造函数的返回类型和返回植是个语法错误。 编程技巧 6.5 适当时候(

  • 我有一个单例类(所以私有构造函数),它需要在初始化期间使用Spring数据存储库。我有一个注入作为构造函数参数。大致: 我想单元测试我的类,所以我需要用模拟值初始化一个模拟存储库,然后在我的类初始化之前传递到我的类中。我如何写我的Mockito模拟在我的JUnit测试使这成为可能?

  • 问题内容: 这是我需要做的: 该构造函数使用52个卡对象初始化Deck,该对象表示标准卡座中的52张卡。这些卡片必须从黑桃A到钻石之王订购。 这是我的尝试: 这部分给我一个错误:“((新卡(套装,卡));” 说构造函数Card(String [],String [])是未定义的。我不确定是否允许我们添加额外的构造函数。为我们编写的代码确实包含Card(int,int)。 好吧,那呢?这行得通吗?

  • 问题内容: 在Java中,但是在其他OO语言中,初始化属性定义之间也有区别,例如 并使用构造函数对其进行初始化? 我想不出任何实际的区别,有没有?否则,即使结果相同,是否存在一种方法优于另一种方法的情况? 问题答案: 初始化顺序在这里很重要。 将字段设置为默认初始值(0,false,null) 调用对象的构造函数(但不要执行构造函数的主体) 调用超类的构造函数 使用初始化程序和初始化块初始化字段