【问题标题】:Object creating object对象创建对象
【发布时间】:2016-02-18 05:23:10
【问题描述】:

我是一个非常新的程序员培训,我的作业中的这个问题让我非常难过。我们目前正在使用对象创建对象,我完全迷失了。我有一个 MediaDemo 类,它应该从 Book 类创建一个实例。我觉得我已经接近了一点,但错误一直说它不能接受变量类型......这是两个类的代码:

    public class Book 
{ 
    // The fields. 
    private String author; 
    private String title;
    private int pages;
    private String refNumber;
    private int borrowed;
    private boolean courseText;

/** 
 * Set the author and title fields when this object 
* is constructed. 
*/ 
    public Book( String bookAuthor, String bookTitle, int bookPages, boolean theCourseText) 
   { 
       author = bookAuthor; 
        title = bookTitle;
        pages = bookPages;
        refNumber = ("");
        courseText = theCourseText;
    }

public String printAuthor()
{
return author;
}

public String printTitle()
{
return title;
}

public void setRefNumber(String ref)
{
if(ref.length() == 3){
refNumber = ref;
}
else{
System.out.println("Please enter a String that's 3 characters long.");
}
}

public String printRef()
{
return refNumber;
}

public void borrow()
{
    borrowed += 1;
}
public int getBorrowed()
{
    return borrowed;
}

public void printDetails()
{
if(refNumber == ("")) {
System.out.println("Book Author: " + author + ". | Book Title: " + title + ". | Book Length: " + pages + " pages. refNumber: ZZZ | Borrowed Books: " + borrowed);
}
else {
System.out.println("Book Author: " + author + ". | Book Title: " + title + ". | Book Length: " + pages + " pages. | Number: " + refNumber + ". | Borrowed Books:     " + borrowed);
}
}
} 

感谢您对此提供的任何帮助,一旦我找到了一个解决方案,可以防止我在办公桌上敲打我的头,我会很高兴...

--更新--

/**
 * Write a description of class MediaDemo here.
 * 
 * @author ---
 * @version 2-17-16
 */
public class MediaDemo
{
 private Book book;
 private String bookAuthor;
 private String bookTitle;
 private int bookPages;
 private boolean theCourseText;
 public MediaDemo (String author,String title,int pages,boolean courseBook)
 {
     bookAuthor = author;
     bookTitle = title;
     bookPages = pages;
     theCourseText = courseBook;
     createBook();
 }

 private void createBook()

{
  book = new Book(bookAuthor, bookTitle, bookPages, theCourseText);
}
}

好的,这是 Book 的当前版本。

【问题讨论】:

  • 请在您的帖子中给出任何具体错误。
  • 您在书中使用了参数化构造函数,但在实例化您未传递的参数时。
  • 具体错误是:
  • Book book = new Book(author, title, bookPages,theCourseText) ;
  • 类 Book 中的构造函数 Book 不能应用于给定类型;必需:java.lang.String, java.int,boolean 发现:没有参数 对不起!这是我第一次在这里发帖。

标签: java bluej


【解决方案1】:

book = new Book(); 语句实例化了一个新对象 book,当你说 new Book() 时,它意味着调用 Book 构造函数

public Book( String bookAuthor, String bookTitle, int bookPages, boolean theCourseText) 
   { 
       author = bookAuthor; 
        title = bookTitle;
        pages = bookPages;
        refNumber = "(\"\")"; \\result : ("")
        courseText = theCourseText;
    }

。在您的代码中,您没有提供创建对象簿的新实例所需的参数。所以你可以尝试替换:

book = new Book();

book = new Book( "Scarlet", "I dunnu", 100, true); 

当然还有参数对应的数据类型

【讨论】:

  • 非常感谢大家的回答!我已将错误代码替换为您的建议,并且我知道在第一个“字符串”之后会出现此错误
  • ')' 预期 --- 我正在使用 BlueJ,不确定我是否提到过这一点。
  • 哦,是的。我没看到。 :)
  • 非常感谢 Jan 的帮助,这是新代码:
  • 我编辑了原来的帖子以覆盖新代码^-^这个网站真的很整洁!
【解决方案2】:

你在书中有一个参数化的构造函数...... 但是当您调用时,您调用的是非参数化构造函数..

所以代码应该是

Book book = new Book(author, title, bookPages, theCourseText) ;

是的,它将创建一个新实例,并在创建时调用参数化构造函数。 谢谢。。

【讨论】:

    【解决方案3】:

    在 MediaDemo 类中,您正在调用默认构造函数 Book() 但它没有在 Book Class 中声明。因为你有一个显式的构造函数
    公共图书(字符串 bookAuthor,字符串 bookTitle,int bookPages,布尔 theCourseText) 您需要使用它或显式声明一个默认构造函数

    【讨论】:

      【解决方案4】:

      在调用以下行之前,您必须为所有参数分配一些值 book = new Book(bookAuthor, bookTitle, bookPages, theCourseText);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-14
        • 1970-01-01
        • 1970-01-01
        • 2020-03-14
        • 2013-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多