如何将用户输入存储到数组列表中?

时间:2015-11-25 19:24:26

标签: java arrays constructor

我正在编写一个程序,允许用户输入书籍的详细信息并将其存储在数组列表中。我的问题是,如何获取我用于在数组列表中存储多个值的代码,而不是仅仅覆盖已存在的代码?

这是我到目前为止所拥有的......

Scanner input = new Scanner(System.in);
    System.out.println("What is the book called?..");
    String bTitle = input.nextLine();
    System.out.println("Who is the author?..");
    String bAuthor = input.nextLine();
    System.out.println("How many do you have?..");
    int bQuantity = input.nextInt();
    System.out.println("How many are out on loan?..");
    int bNumOnLoan = input.nextInt();
    System.out.println("How many times has it been loaned?..");
    int bNumTimesLoaned = input.nextInt();

    ArrayList<Book> books = new ArrayList<Book>();
    Book object = new Book(bTitle, bAuthor, bQuantity, bNumOnLoan, bNumTimesLoaned);
    books.add(object);

但是当我再次运行时,我之前输入的值已被替换。我很难受到任何帮助,因为我很难过。

2 个答案:

答案 0 :(得分:1)

import java.util.ArrayList;
import java.util.Scanner;

public class BookCapture {

     static ArrayList<Book> books = new ArrayList<Book>();

    public static void main(String ase[]){

        for(int i=0;i<5;i++){
            capture();
        }
       System.out.println(books.toArray());
    }

    public static void capture(){
        Scanner input = new Scanner(System.in);
        System.out.println("What is the book called?..");
        String bTitle = input.nextLine();
        System.out.println("Who is the author?..");
        String bAuthor = input.nextLine();
        System.out.println("How many do you have?..");
        int bQuantity = input.nextInt();
        System.out.println("How many are out on loan?..");
        int bNumOnLoan = input.nextInt();
        System.out.println("How many times has it been loaned?..");
        int bNumTimesLoaned = input.nextInt();

        Book object = new Book(bTitle, bAuthor, bQuantity, bNumOnLoan, bNumTimesLoaned);
        books.add(object);
    }
}
class Book{
    // your book class
    // do override your tostring() method;
}

在上面的代码中,您要求用户输入5次详细信息,这将在books ArrayList对象中捕获。可以通过询问他想要输入更多书来修改for循环以使其更加用户友好。

例如,修改上面的代码,用以下方式询问用户。

按1:如果您想添加另一本书

按2:如果您想查看所有图书

按3:如果您想退出该计划。

进一步分配。

阅读一些关于序列化的内容。这将解决在运行之间存储数据的问题。然后,修改程序以另外执行以下操作。

按4:如果您希望退出存储的图书。

按5:如果您想要检索所有已存档的图书:)

答案 1 :(得分:0)

使用.add()不会取代 ArrayList中的内容,只有会在列表中添加新元素

这意味着要添加多个项目,只需多次使用.add()

然后你可以使用他们的索引来获取这些项目,例如:

ArrayList<String> list = new ArrayList<String>();
list.add("item1");
list.add("item2");

要获取'item1',请使用list.get(0),要获取'item2',请使用list.get(1)

此外,Java 不会在运行之间保存变量数据。当程序结束时,存储在任何变量中的所有数据都将丢失

要在运行之间保存数据,您可以将数据保存到文件中,并在运行开始时从中读取数据。请考虑使用FileWriterFileReader