1

こんばんは(っぽい?) 私は今、3冊の本に3セットのタイトル/著者を割り当てるクラス用のプログラムを作成しています。ブッククラス、テストクラス、パトロンクラスがあります。これまでのところ、パトロンはテスターから名前を適切に収集して返しています。問題はパトロン クラス、browBook メソッドにあります。テスターは、タイトルと名前を初期化し、利用者を作成してから、borowBook メソッドのブール値の結果を出力しようとします。テスターからパトロンの借用書にタイトルと著者を送信しますが、借用ブック メソッドがタイトルを設定しようとすると nullpointerexception が発生し続けますが、借用ブックの他のすべての著者とタイトル関連のメソッドにも同じことが当てはまると思います。どんなアドバイスでも大歓迎です!

テスタークラス:

public class ProjectFiveSix {

public static void main(String[] args) {


    String title = "On the Origin of Species";
    String name = "Hugo";
    String author = "Charles Darwin";

    Patron patronOne = new Patron();

    System.out.print("The Patron's Name is: " + patronOne.getName(name));
    System.out.print("Test " + patronOne.borrowBook(author, title));

パトロンクラス:

public class Patron {

private String name;
private Book book1;
private Book book2;
private Book book3;

public Patron(){
    name = "";
    book1 = null;
    book2 = null;
    book3 = null;
}
public String getName(String name){
    return name;
}
public boolean borrowBook(String title, String author){     
    if (book1 == null){
        book1.getTitle(title);
        book1.getAuthor(author);
        return true;    

    }else if (book2 == null){
        book2.getTitle(title);
        book2.getAuthor(author);
        return true;

    }else if (book3 == null){
        book3.getTitle(title);
        book3.getAuthor(author);
        return true;

    }else{
        return false;
    }   
   }    




public String toString(String str){
    str = name + "\n" + book1;
    return str;
}

}

書籍クラス:

public class Book {

private String title;
private String author;

public Book(){
    title = "";
    author = "";
}

public String getTitle(String title){
    title = title;
    return title;
}
public String getAuthor(String author){
    author = author;
    return author;
}

}

多くの人が示唆しているように、代わりにborrowBookの本を != null に設定してみましたが、ある程度は機能しました。各本は public Patron(){ で null に設定されているため、メソッドは false になります。理にかなっています!ただし、各本は null から開始し、browBook を実行すると、見つけた最初の null 本に title と author の現在の値を割り当てるという考え方でした。私はそれを設定して、borowBook が false を返した場合、Book1 に値を割り当てることができると思いますが、そのメソッドがブック 2 と 3 に使用できるとは信じていません。コミュニティに感謝しますが、皆さんは大きな助けになります!

回答済み - 本の - これ - を使用すると、冗長性が減り、値が変更されます。すばらしい修正です。新しい本を作成することも理にかなっていてうまくいきました。すべての助けに感謝します。

4

6 に答える 6

1

bookN == nullオブジェクトを呼び出すことができないかどうかを確認bookN.get[Title/Author]nullます。

あなたが意図したのはbookN != null、あなたの使用法を正しく理解しているかどうかを確認することでした.

于 2013-11-15T01:17:27.227 に答える
0

nullのように見えbook1 、NullPointerExceptionを取得していますbook1.getTitle(title);

于 2013-11-15T01:20:13.353 に答える
0

null オブジェクトからフィールド値を取得しようとしています。ブック クラス コンストラクターがプライベート フィールドに値を提供できるようにすることをお勧めします。

public Book(String title,String author){
    this.title = title;
    this.author = author;
} 
于 2013-11-15T01:39:14.057 に答える