Java 为图书馆程序中的图书分配状态

Java 为图书馆程序中的图书分配状态,java,arraylist,Java,Arraylist,我真的是java新手,很抱歉我的代码不一致/混乱 我正在创建一个简单的图书馆程序,其中一个要求是显示图书馆中的所有书籍及其状态(in或out) 例如: 《远大前程》:在 跑风筝的人:出去 呼啸山庄:出局 但是,如果我只签出一本书,它会将所有的“图书状态”更改为“出局”,而不是其中一本。例如,我不断得到: 远大前程:出局 跑风筝的人:出去 呼啸山庄:出局 在我的图书类中,我有这样的状态设置器/获取器,还有一个ArrayList图书列表来存放所有图书馆的图书 static ArrayList Boo

我真的是java新手,很抱歉我的代码不一致/混乱

我正在创建一个简单的图书馆程序,其中一个要求是显示图书馆中的所有书籍及其状态(in或out)

例如:

《远大前程》:在

跑风筝的人:出去

呼啸山庄:出局

但是,如果我只签出一本书,它会将所有的“图书状态”更改为“出局”,而不是其中一本。例如,我不断得到:

远大前程:出局

跑风筝的人:出去

呼啸山庄:出局

在我的图书类中,我有这样的状态设置器/获取器,还有一个ArrayList图书列表来存放所有图书馆的图书

static ArrayList BookList=new ArrayList();
公共静态字符串getStatus(字符串簿)
{
返回状态;
}
公共静态void setStatus(字符串newStatus)
{
状态=新闻状态;
}
下面是在赞助人类中借书的方法

publicstaticvoid签出簿()
{
扫描仪输入读取=新扫描仪(System.in);
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入完整的用户名称:”);
字符串借款人=inputread.nextLine();
System.out.println(“输入要签出的图书标题:”);
String bookCheckOut=inputread.nextLine();
if(Book.BookList.contains(bookCheckOut))
{
Book.BookList.remove(bookCheckOut);
Book.setStatus(“OUT”);/?不起作用??
int bookIndex=Book.getIndexNumber(bookCheckOut);
Book.setTrue(Book.BookList.get(bookIndex));
Book.setBook(Book.BookList.get(bookIndex));
帐面收款人(借款人);
Book.setBook(bookCheckOut);
System.out.println(“-----------”+bookCheckOut+”已签出!-----------”;
}
}
如何使其仅在数组列表中的指定书籍更改其状态?我尝试过创建不同的方法,但这似乎也不起作用:

Book.setTrue(bookCheckOut)//如果书籍已签出,则为true
Book.BookList.get(indexNum).setTrue(bookCheckOut);
Book.setTrue(Book.BookList.get(i));
//以下是我尝试过的一些其他尝试,但它们仍然没有改变任何东西:(
图书类别:

import java.util.ArrayList;
导入java.util.Collections;
导入java.util.Scanner;
公共类Book实现BookInterface{
扫描仪输入=新扫描仪(System.in);
静态ArrayListUserList=new ArrayList();
静态ArrayListBookList=new ArrayList();//仅显示标题//签出书籍时使用
静态ArrayListOrigBookList=new ArrayList();//跟踪所有输入的标题
公共静态字符串标题;
公共字符串作者;
公共静态字符串书;
公共布尔签入;
公共静态字符串状态;
公共静态字符串借用器;
公共图书(t字串、a字串){
title=t;
作者=a;
}
//创建新书
公共图书(字符串新标题){
标题=新标题;
}
公共字符串toString(){
返回标题+“”+作者;
}
公共字符串getTitle(){
返回标题;
}
公共无效集合标题(字符串标题){
this.title=标题;
}
公共字符串getAuthor(){
返回作者;
}
公共void setAuthor(字符串编写器){
this.author=作者;
}
公共静态字符串getStatus(字符串簿){
返回状态;
}
公共静态void setStatus(字符串newStatus)
{
状态=新闻状态;
/**公共静态void setStatus(字符串newStatus)
{
状态=新闻状态;
}**/
公共静态void setTrue(字符串bookCheckOut){
//状态=真;
}
公共静态void setFalse(字符串bookCheckIn){
//状态=假;
}
公共静态无效设置权限(字符串新权限){
借款人=新借款人;
}
公共静态字符串getBorrower(字符串checkPatron){
归还借款人;
}
公共静态字符串getBook(字符串检查用户){
还书;
}
公共静态void setBook(字符串newBook){
书=新书;
}
公共静态void addBook(){
扫描仪输入=新扫描仪(System.in);
扫描仪输入读取=新扫描仪(System.in);
系统输出打印(“输入书名:”);
字符串title1=inputread.nextLine();
扫描仪输入1=新扫描仪(System.in);
系统输出打印(“输入图书作者:”;
字符串author1=inputread.next();
Book fullBook=新书(标题1,作者1);//创建带标题和作者的构造函数
Book book1=新书(title1);//构造函数w/仅使用标题来显示所有书籍
图书目录。增加(标题1);
新增(标题1);
//setStatus(“IN”);//false=签入
setFalse(标题1);
System.out.println(“-------------------------------------------------------------”;
System.out.println(“----”+title1+”现在在库中!----”;
System.out.println(“-------------------------------------------------------------”;
}
公共静态void editBook(){
扫描仪输入读取=新扫描仪(System.in);
System.out.println(“输入原始书名:”);
字符串origTitle=inputread.nextLine();
System.out.println(“输入编辑过的书名:”);
String editedTitle=inputread.nextLine();
Collections.replaceAll(Book.UserList、origTitle、editedTitle);
System.out.println(“--------------------------------------------------------------”);
System.out.println(origTitle+”已更改为“+editedTitle+”!”;
System.out.println(“--------------------------------------------------------------”);
}
//打印书籍列表&如果签入或签出
公共静态无效库Inventory(){

对于(inti=0;i对于getStatus方法,您使用的是静态变量,这意味着它在所有书籍实例中都是相同的,您不希望这样,只需从
public class Book {
  private String title;
  private boolean isCheckedOut;
  public Book(String title, boolean isCheckedOut) {
    this.title = title;
    this.isCheckedOut = isCheckdOut;
  }

  public void setTitle(String title) {
    this.title = title;
  }
  public String getTitle() {
    return title;
  }
  public void setCheckedOut(boolean isCheckedOut) {
    this.isCheckedOut = isCheckedOut;
  }
  public boolan isCheckedOut() {
    return isCheckedOut;
  }
  @Override
  public String toString() {
    return title + ": " + (isCheckedOut ? "OUT" : "IN");
  }
}
Book greatExpectations = new Book("Great Expectations", false);
List<Book> library = new ArrayList<>();
library.add(new Book("Great Expectations", false));
library.add(new Book("Moby Dick", false));
library.add(new Book("Catch-22", false));
library.add(new Book("The Great Gatsby", false));
for(Book book : library) {
  if("Catch-22".equals(book.getTitle()) {
    book.setCheckedOut(true);
    break; // found the book, break out of the loop
  }
}
System.out.println(library);

// prints:
// [Great Expectations: IN, Moby Dick: IN, Catch-22: OUT, The Great Gatsby: IN]