アプリ版:「スタンプのみでお礼する」機能のリリースについて

Javaを初めて、数日です。
プログラムを作成していたところ、NullpointerExceptionが出てしまい解決策が見つからず前進できません。
よろしければ、お手をお貸しください。よろしくお願いいたします。



class Book
{
String name;//書名
String author;//著者名
String publisher;//出版社

/*コンストラクタ*/
Book(String name, String author, String publisher)
{
this.name = name;
this.author = author;
this.publisher = publisher;
}
/*文の文字列化*/
public String toString()
{
return ("書名" + this.name + ",著者名" + this.author + ",出版社" + this.publisher);
}
}

class BookShelf
{
static Book[] bookShelf;//本棚のデータ構造 ここでは本の配列
static int index = 0;//本が次に入る本棚の位置(配列の添え字)
static int i;
static int maxsize;

/*コンストラクタ*/
BookShelf(int maxsize)
{
bookShelf = new Book[maxsize];
}
/*本棚に本abookを入れる*/
static void add(Book aBook)
{
bookShelf[index].name = aBook.name;
bookShelf[index].author = aBook.author;
bookShelf[index].publisher = aBook.publisher;
index++;
}

/*本棚の本の一覧を標準出力に出力する*/
static void show()
{
for (i = 0; i < maxsize; i++)
{
System.out.println(bookShelf[i]);
}
}

/*本棚の文字列化*/
public String toString()
{
return "書名:" + bookShelf[i].name + ",著者名" + bookShelf[i].author + ",出版社:" + bookShelf[i].publisher;
}
}

class TestBookShelf
{
public static void main(String args[])
{
BookShelf bookshlef1 = new BookShelf(2);
Book X = new Book("book1", "tanaka", "SIT1");
BookShelf.add(X);
Book Y = new Book("book1", "suzuki", "SIT2");
BookShelf.add(Y);

BookShelf.show();
}
}

A 回答 (4件)

>>ANo.2


BookShelf.addがstaticだから、BookShelf.addで正しいかと。
#わざわざstaticにしない方がいいと思うが・・・・

NullPointerExceptionの原因は、
BookShelf.addの中のbookShelf[index]が初期化されてない(NULL)から。
    • good
    • 0

答えではないのですが、、、。


良い機会ですので例外について勉強してみては如何でしょう?
NullPointerExceptionのエラーメッセージに呼び出し階層や発生した行番号等が表示されると思うのですが、いかがですか?
このエラーメッセージの意味がわかって、発生箇所がわかれば解決の糸口になると思いますよ。
    • good
    • 0

何でbookshlef1.AddでなくてBookShelf.addなんだい?

この回答への補足

回答ありがとうございます。
なるほど。


ご指摘いただいたように、TestBookShelfクラスを次のように書き換えました。

class TestBookShelf
{
public static void main(String args[])
{

BookShelf bookshelf1 = new BookShelf(2);

Book X = new Book("book1", "tanaka", "SIT1");
bookshelf1.add(X);
Book Y = new Book("book1", "suzuki", "SIT2");
bookshelf1.add(Y);
bookshelf1.show();

}
}

しかし・・同様にNullPointerExceptionがでてしまうのですが・・・。

補足日時:2008/06/09 02:33
    • good
    • 0

ろくにソースも読んでおりませぬが一つだけ


try catchでエラー範囲だけでも絞ってみては?
    • good
    • 0
この回答へのお礼

ありがとうございます。
そういう機能があることを知りませんでした(TT

お礼日時:2008/06/09 02:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!