0

この例では、3 つのクラスがあります。Method クラス、Book クラス、AllBook クラス クラス。AllBooks は book クラスを拡張します。Methods クラスは、私のメソッドのほとんどが存在する場所です (当然のことです)。addBook メソッドのみに問題があります。

コード:

メソッドクラス

public class methods {
// Variables
int bCount = 0;
int mCount = 0;
int lCount = 0;
int boCount = 0;
//Arrays
Book[] bArr = new Book[500];
Member[] mArr = new Member[250];
Librarian[] lArr = new Librarian[50];
MainMenu mm;
public void newBook() {
    int cont2 = JOptionPane.YES_OPTION;
    int cont = JOptionPane.YES_OPTION;
    int choice = JOptionPane.YES_OPTION;
    while (choice == JOptionPane.YES_OPTION) {
        String ttl = mm.tiltleTF.getText();
        String athr = mm.authorTF.getText();
        String gnr = mm.genreTF.getText();
        String lctn = mm.locationTF.getText();
        String cndtn = mm.conditionTF.getText();
        if (athr == null && gnr == null && lctn == null && cndtn == null) {
            cont = JOptionPane.showConfirmDialog(null, "You have left out some fields are you sure you wish to continue?", "Information left out", JOptionPane.YES_NO_OPTION);
        }
        while (cont == JOptionPane.YES_OPTION) {
            ttl = ttl.toUpperCase();
            athr = athr.toUpperCase();
            gnr = gnr.toUpperCase();
            lctn = lctn.toUpperCase();
            cndtn = cndtn.toUpperCase();
            cont2 = JOptionPane.showConfirmDialog(null, "The book you wish to enter is:" + "\n Title:\t" + ttl + "\n Author:\t" + athr + "\n Genre:/t" + gnr + "\n Location: \n" + lctn + "\n Condition:\t" + cndtn, "Are you sure?", JOptionPane.YES_NO_OPTION);
            while (cont2 == JOptionPane.YES_OPTION) {
                bArr[bCount] = new AllBooks(bCount, ttl, athr, gnr, "IN", lctn, cndtn);
                try {
                    PrintWriter pw = new PrintWriter(new FileWriter("books.txt", true));
                    pw.println(bArr[bCount].toString(0);
                    pw.close();
                    bCount++;
                    displayBooks();
                    choice = JOptionPane.showConfirmDialog(null, "Book added! Do you wish to enter another book?", "Enter another book?", JOptionPane.YES_NO_OPTION);
                } catch (IOException ex) {
                }
            }
        }
    }
}

すべての本

public class AllBooks extends Book {

private String genre;
private String status;
private String Location;
private String condition;

public AllBooks(int bookID, String title, String author, String genre, String status, String Location, String condition) {
    super(bookID, title, author);
    this.genre = genre;
    this.status = status;
    this.Location = Location;
    this.condition = condition;
}

public String getGenre() {
    return genre;
}

public void setGenre(String genre) {
    this.genre = genre;
}

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}

public String getLocation() {
    return Location;
}

public void setLocation(String Location) {
    this.Location = Location;
}

public String getCondition() {
    return condition;
}

public void setCondition(String condition) {
    this.condition = condition;
}

@Override
public String toString() {
    String stg = "";
    stg = stg + getBookID() + '\t' + getTitle() + addSpaces(getTitle(), 30) + getAuthor() + addSpaces(getAuthor(), 30) + genre + addSpaces(genre, 15) + status + addSpaces(status, 5) + Location + addSpaces(Location, 20) + condition;
    return stg;
}

public String toString(int i) {
    String stg = "";
    stg += getBookID() + "#" + getTitle() + "#" + getAuthor() + "#" + getGenre() + "#" + getStatus() + "#" + getLocation() + "#" + getCondition() + "#";
    return stg;
}

}

公開クラスを予約する

private int bookID;
private String title;
private String author;


public Book() {
}

public Book(int bookID, String title, String author) {
    this.bookID = bookID;
    this.title = title;
    this.author = author;
}

public int getBookID() {
    return bookID;
}

public void setBookID(int bookID) {
    this.bookID = bookID;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getAuthor() {
    return author;
}

public void setAuthor(String author) {
    this.author = author;
}


public String addSpaces(String s, int w) {
    String spc = "";
    for (int i = 1; i <= (w - s.length()); i++) {
        spc = spc + " ";
    }
    return spc;
}

}

私が抱えている問題は、toString を使用してファイルに書き込むときの newBook メソッドで、「リンク (?)」または all books クラスの toString (in i) メソッドを認識しないことです。どうしたの?

4

3 に答える 3

1

あなたの newBook メソッドは Book クラスにありますか? 継承は、その上にあるものからのみ継承できるように機能するため、メソッドを継承ツリーの下に伝播させたい場合は、それを使用するクラスよりも高いレベルで定義する必要があります。

別名。AllBooks ではなく Book で toString メソッドを定義します。

于 2013-07-18T15:57:37.797 に答える
0

toString() は引数を必要としません。http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#toString%28%29を参照してください。

于 2013-07-18T16:05:57.483 に答える