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