Java 如何使用使用JOptionPane的构造函数将对象从方法传递到空数组中?
我在计算如何存储构造函数中的对象时遇到了问题。到目前为止,我只得到一个对象,其余的都是空的。如果有人能给我解释一下,让初学者能理解,我将不胜感激Java 如何使用使用JOptionPane的构造函数将对象从方法传递到空数组中?,java,arrays,Java,Arrays,我在计算如何存储构造函数中的对象时遇到了问题。到目前为止,我只得到一个对象,其余的都是空的。如果有人能给我解释一下,让初学者能理解,我将不胜感激 public class Bookstore { /* Main Class Bookstore to be made modular */ public static void main(String args[]) { Book catalogue[] = new Book[3];
public class Bookstore
{
/*
Main Class Bookstore to be made modular
*/
public static void main(String args[])
{
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;
}
public static void sortBook()
{
}
public static void searchBook(Book catalogue[])//remain void
{
String searchValue = JOptionPane.showInputDialog("Enter the title of the book you are searching for");
boolean found = true;
for(int i=0; i<catalogue.length && catalogue[i] != null ; i++)
{
if(searchValue.equalsIgnoreCase(catalogue[i].getTitle()))
{
JOptionPane.showMessageDialog(null, "Book details: " + catalogue[i].toString());
found = true;
}
}
if(found == false)
JOptionPane.showMessageDialog(null, "The title does not exist in the collection ");
}
public static void displayBook(Book catalogue[])//remain void
{
String output = "";
for(Book bk:catalogue)
{
output += bk + "\n";
}
JOptionPane.showMessageDialog(null, output);
}
}
所以,这总是错误的
if(count == max)
您可以在该语句之前设置值。零永远不等于十
一些IDE甚至会向您指出这一点
如果你想得到一个可以在方法之间使用的变量,你需要学习变量的作用域
例如,使用静态类变量
private static Book[] books;
private static final int MAX_BOOKS = 10;
private static int count;
public static void main(String[] args) {
books = getBooks();
bookMenu();
}
public static Book[] getBooks() {
if(count == MAX_BOOKS) {
JOptionPane.showMessageDialog(null, "Catalogue full - cannot add any more books");
} else {
for(; count < MAX_BOOKS; count++) {
books[count]= addBook();
}
}
return books;
}
然后,如果要重复菜单,请使用循环。不要把它放在每个方法的末尾
另外,searchBookBook没有搜索标题。您想向方法传递字符串,而不是Book类请将您的帖子限制为一个问题/问题我很抱歉,我已经修改了问题,我需要的帮助是使用Input中的对象填充数组您是否尝试创建一个private Book[]成员变量?如果您想要对象的动态列表而不是固定大小,使用ArrayList构造函数全局变量是私有的int,string,string,double谢谢你,我如何在不全局声明任何东西的情况下实现它?我不理解这个问题。类变量是全局变量。如何将对象存储到数组中,第一个列在列表中,但剩余的显示为null I Java初学者如何将对象存储到数组中,第一个列在列表中,但剩余的显示为null I Java初学者您已经在数组中存储对象了。如前所述,所有数组元素在分配它们之前都将为null