我正在编写一个程序,允许用户输入书籍的详细信息并将其存储在数组列表中。我的问题是,如何获取我用于在数组列表中存储多个值的代码,而不是仅仅覆盖已存在的代码?
这是我到目前为止所拥有的......
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);
但是当我再次运行时,我之前输入的值已被替换。我很难受到任何帮助,因为我很难过。
答案 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 不会在运行之间保存变量数据。当程序结束时,存储在任何变量中的所有数据都将丢失。
要在运行之间保存数据,您可以将数据保存到文件中,并在运行开始时从中读取数据。请考虑使用FileWriter和FileReader。