コンストラクタからオブジェクトを保存する方法を理解するのに問題があります。これまで私が得るのは1つのオブジェクトで残りはすべてnullです。誰かが私にそれを説明することができれば、初心者がそれが大いに評価されることを理解できるようになります。なぜコンストラクタ配列は1つを除いてnull値を格納しますか?
Book catalogue[] = new Book[3];
int select;
do
{
select = bookMenu();
switch(select)
{
case 1:
int i =0;
if(catalogue[i] != null)
{
JOptionPane.showMessageDialog(null,"Test");
break;
}
catalogue[i] = addBook();
case 2:
sortBook();
break;
case 3:
searchBook(catalogue);
break;
case 4:
displayBook(catalogue);
break;
case 5:
break;
}
}
while(select != 5);
}
public static int bookMenu()
{
int select;
String menuOptions = "--Book store--\n"
+ "\n1. Add book to catalogue"
+ "\n2.Sort and display books by price"
+ "\n3. Search for a book by title"
+ "\n4. Display all books"
+ "\n\n5. Exit";
do
{
select = Integer.parseInt(JOptionPane.showInputDialog(menuOptions));
}
while(select < 1 || select > 5);
return select;
}
public static Book addBook()
{
int isbn;
String title, author;
Book catalogue = null;
double price;
for(int i=0; i<3;i++)
{
isbn = Integer.parseInt(JOptionPane.showInputDialog
("Enter Book ISBN or: "));
title = JOptionPane.showInputDialog
("Enter Book Title: ");
author = JOptionPane.showInputDialog
("Enter Book Author: ");
price = Double.parseDouble(JOptionPane.showInputDialog
("Enter Book Price: "));
catalogue = new Book(isbn, title, author, price);
}
return catalogue;
}
は、表示方法は最初の最後のオブジェクトが表示されますし、他のすべては、あなたが本を追加するためのすべての呼び出しで0
でi
を初期化している。ここ
public static void displayBook(Book catalogue[])//remain void
{
String output = "";
for(Book bk:catalogue)
{
output += bk + "\n";
}
JOptionPane.showMessageDialog(null, output);
}
あなたは 'public static Book [] addBook()' ...のようなものを意味しましたか... – vikingsteve
ようこそ。 [mcve]の作成方法をご覧ください。コードは短くはなく、問題は十分に説明できません。 – AxelH
'addBook'の' for'ループは時間を無駄にします。また、 'addBook'は実際に何かに本を追加しません。より良い名前は 'createBook'でしょう。これは実際にはもっとよく似ています。 –