McKeene
McKeene

Reputation: 285

Multiple variables in one array?

I am taking an introduction course to Java, where I am building a small library systems that lets a librarian add books, list all the books and search for a specific book.

It is working for now, but in the ArrayList of a book there is only the title. I would like to add ISBN, author, year published and its current status in the library. How do I add the variables in the same ArrayList? Below is my ArrayList;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

//Array form available books

public final class ListBook {


    public static List<String> VALUES = new ArrayList<String>(Arrays.asList(
             new String[] {"Book1","Book2","Book3","Book4"} 
    ));
}

The other important class in this case allows the librarian to add a new book;

public class InsertBook {

    // variables for the book info
    public String name_book;

    // Importing the list of books
    ListBook lb = new ListBook();
    // variable for the list of books
    private int x;

    // Constructors
    Scanner input_name = new Scanner(System.in);

    public void insertDataBook() {
        System.out.println("----------------------------------------");
        System.out.println("Write your book title:");

        name_book = input_name.next();
        System.out.println("----------------------------------------");
        System.out.println("The following value was added");
        System.out.println(name_book);
        System.out.println("----------------------------------------");

        lb.VALUES.add(name_book);

        // To iterate through each element, generate a for so the array comes to
        // a list. Through the variable x.
        for (x = 0; x < lb.VALUES.size(); x++) {
            System.out.println(lb.VALUES.get(x));
        }

    }

}

How should it be done?

Upvotes: 1

Views: 3959

Answers (2)

Dermot Blair
Dermot Blair

Reputation: 1620

You will have to make a Book class with member variables ISBN, Year, Title, etc.

Then you can make an ArrayList of Book objects like this: ArrayList<Book> bookList = new ArrayList<Book>();

The Book class would look something like the following:

public class Book{

    String ISBN;
    int year:

    Book(String ISBN, String year){
        this.ISBN = ISBN;
        this.year = year;

    void setISBN(String ISBN)
    {
        this.ISBN = ISBN;
    }

    String getISBN()
    {
        return ISBN;
    }

    void setYear(int year)
    {
        this.year = year;
    }

    int getYear()
    {
        return year;
    }

}

You can then add Book objects to the ArrayList of Book objects like so:

ArrayList<Book> bookList = new ArrayList<Book>();
Book aBook = new Book("335-0424587965", 2001);
bookList.add(aBook);

Upvotes: 2

Martin Konecny
Martin Konecny

Reputation: 59611

Instead of having an ArrayList of "Strings" which have only your title, you will want to have an ArrayList of objects instead. Consider the following:

class Book {
    public String ISBN;
    public String author;
    public String year;

    public Book(String ISBN, String author, String year) {
        this.ISBN = ISBN;
        this.author = author;
        this.year = year;
    }
}

Then later you would add to this list as follows:

List<Book> VALUES = new ArrayList<Book>();
Book b = new Book("1234", "Name", "1984");
VALUES.add(b);

Upvotes: 7

Related Questions