2016-02-18 3 views
-1

Я очень новый программист в обучении, и эта проблема в моем задании сильно меня превзошла. В настоящее время мы работаем над созданием объектов с объектами, и я полностью потерян. У меня есть класс 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); 
} 
} 
} 

Спасибо за любую помощь по этому вопросу, я буду рад, как только я найти решение, которое мешает мне бить головой на моем столе ...

--UPDATED--

/** 
* 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); 
} 
} 

Хорошо, это currect версия книги.

+0

Просьба указать любые ошибки в ваших сообщениях. – ChiefTwoPencils

+1

Вы использовали параметризованный конструктор в книге, но при создании своих не проходящих параметров. –

+0

Конкретная ошибка: – Scarlet

ответ

1

Оператор 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); 

, конечно, с соответствующими типами данных для параметров

+0

Большое вам спасибо за ответ, все! Я заменил код ошибки на ваше предложение, и я знаю, что получил эту ошибку после первого «String» – Scarlet

+0

')' Ожидается --- Я использую BlueJ, не уверен, что я упоминал об этом. – Scarlet

+0

о да. Я этого не видел.:) – JanLeeYu

0

Вы должны параметризированный конструктор в книге ... Но когда вы вызывающий вас, вызывает конструктор без параметризации.

Таким образом, код должен быть

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

Да это создаст новый экземпляр и при создании будет вызывать параметризированный конструктор .. Спасибо ..

0

В MediaDemo классе вы вызываете конструктор по умолчанию Book A() , но его не объявлен в Книжный класс. Поскольку у вас есть явный конструктор
общественности Book (String bookAuthor, String BOOKTITLE, внутр bookPages, логическое theCourseText) вы должны использовать его или объявить конструктор dafault явно

0

Перед вызовом ниже линии вы должны иметь все аргументы назначены с некоторыми значениями book = new Book (bookAuthor, bookTitle, bookPages, theCourseText);

Смежные вопросы