我们可以用Java在该类中创建类的ArrayList吗?

时间:2015-11-21 17:32:44

标签: java arraylist

萨拉姆!

在java中,我需要在该类中创建一个类的ArrayList。可能吗??? 我知道如果我在该类构造函数中创建一个类的对象,那么它将导致StackOverFlow。下面给出问题的完整细节。如何创建BookInfo类的ArrayList,在该类本身???

问题陈述:
你需要编写一个java程序,它只包含两个名为“BookInfo”和“BookMgtSys”的类。

BookInfo类必须具有以下数据成员: •ISBN •书名 •作者姓名 •书籍总数 当您添加书籍时,它将增加变量Total Books并在您删除书籍时减少。

BookInfo类必须具有以下成员方法: •默认构造函数 •参数化构造函数 •addbook()
•searchBook() •deleteBook()

BookMgtSys是一个包含main()方法的公共驱动程序类。您的文件名应该是BookMgtSys,因为它是您程序中的公共类。

详细说明:

默认构造函数:默认构造函数将创建一个ArrayList。

参数化构造函数:它应该使用三个名为(ISBN,Book Name和Author Name)的String参数,并使用传递的参数初始化数据成员值。 addBook():此方法将要求用户输入ISBN,书名和作者名称,然后在ArrayList中添加该书并增加Total Book变量。成功添加图书后,应显示包含图书信息的消息框。 searchBook():此方法接受一个参数,即书名,并在ArrayList中搜索书名。如果找到搜索,则显示Book信息,否则显示Book not found。 deleteBook():此方法接受一个参数,即书名,并从ArrayList中删除该书,然后递减Total Book变量。

感谢您的帮助。

代码如下。但它没有编译。它给出了以下错误:

  

C:\ Code> javac BookMgtSys.java BookMgtSys.java:39:错误: - >预期           bookList = new ArrayList()();                                                  ^ BookMgtSys.java:39:错误:';'预期           bookList = new ArrayList()();                                                   ^ BookMgtSys.java:67:错误:解析时出现了文件结尾} ^ 3错误

import javax.swing.*;
import java.util.*;
public class BookMgtSys
{
public static void main(String[] args)
{

System.out.println("Bismillah");
BookInfo Books=new BookInfo();
String  UserOption = JOptionPane.showInputDialog("Enter 1 to Add Book\r\nEnter 2 to Search Book\r\nEnter 3 to Delete Book\r\nEnter 4 to Exit System");
switch(UserOption)
{
    case "1":
    //  Books.addbook();
    break;
    case "2":
    break;
    case "3":
    break;
    case "4":
    break;

}
//JOptionPane.showMessageDialog(null, "You entered " + ipstring);
}
}
class BookInfo
{
 String ISBN;
 String BookName;
 String AuthorName;
 static int TotalBooks;
ArrayList<BookInfo> bookList;
//constructor
// ArrayList<BookInfo> bookList;
//BookInfo class must have the following member methods:
public BookInfo()
{
    bookList = new ArrayList() <BookInfo>();
//persons = new ArrayList()<PersonInfo>();
}
// public void BookInfo(String ISBN, String BookName, String AuthorName)
// {
// this.ISBN=ISBN;
// this.BookName=BookName;
// this.AuthorName=AuthorName;
// TotalBooks++;
// }
 // public void addbook ()
 // {
     // // this.ISBN=JOptionPane.showInputDialog("Enter The ISBN");
     // // this.BookName=JOptionPane.showInputDialog("Enter The Name");
     // // this.AuthorName=JOptionPane.showInputDialog("Enter The Author");

      // TotalBooks++;
 // }
// public void searchBook ()
// {

// }
// public void deleteBook ()
// {
    // if(TotalBooks>0)
        // TotalBooks--;
// }

}

3 个答案:

答案 0 :(得分:3)

在类T的构造函数中创建T将不会创建递归循环,因为您不是创建T的其他实例,而只是一个容器,稍后可以添加到该容器中{{1}}个实例。

答案 1 :(得分:2)

请在此处发布您的代码?

你写了new ArrayList() <BookInfo>();,是吗? 如果为true,则在ArrayList之后删除括号。

答案 2 :(得分:2)

 ArrayList<BookInfo> bookList = new ArrayList<BookInfo>();

但是,如果它解决了你的问题(无法编辑他的帖子,请upvote Ihor Yatsenko回答..)