gpt4 book ai didi

java - (图书馆) checkout 状态返回所有 "true"

转载 作者:行者123 更新时间:2023-11-29 05:03:15 26 4
gpt4 key购买 nike

我没有使用 boolean 值来查看一本书是否被 checkout ,而是我想用一个字符串来表示它是我想要的,但是当我调用该方法来 checkout 一本书时,该字符串适用于书籍对象的整个数组列表。我怎样才能更改那本书的状态?

import java.util.*;

public class Library
{

String owner;
int numBooks;
boolean isCheckedOut;
String status = "false";

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



public void addBook(Book b)
{
bookList.add(b);

}
public String checkout(Book c) {

status = "true";
return status;

}

public Library(String o)
{
owner = o;
}
public String toString()
{


String s = "Owner: \t" + owner + "\nSize: \t" +
bookList.size()+"\nBooks: \t";
for( int i = 0;i < bookList.size();i++)
{
String title = bookList.get(i).getTitle();
//System.out.println(title);
s+="\n\t\t\t" +title +" Checked out: " + status; //bookList.get(i).getStatus();
}





return s;
}

public static void main(String [] args)
{
Library l = new Library("Jeremiah");
System.out.println(l);



}
}

public class Mainn
{
public static void main(String [] args)
{
Book book1 = new Book("Aambi","Aisney","Aalt","1942",1453);
Book book2 = new Book("Bambi","Bisney","Balt","1942",1453);
Book book3 = new Book("Cambi","Cisney","Calt","1942",1453);
Book book4 = new Book("Dambi","Disney","Dalt","1942",1453);
Book book5 = new Book("Eambi","Eisney","Ealt","1942",1453);
Book book6 = new Book("Fambi","Fisney","Falt","1942",1453);
Book book7 = new Book("Gambi","Gisney","Galt","1942",1453);
Book book8 = new Book("Hambi","Hisney","Halt","1942",1453);
Book book9 = new Book("Iambi","Iisney","Ialt","1942",1453);
Book book10 = new Book("Jambi","Jisney","Jalt","1942",1453);
Book book11 = new Book("Kambi","Kisney","Kalt","1942",1453);
Library l = new Library("Jeremiah");

// l.addBook(new Book("Xambi","Xisney","Xalt","1579",765));

l.addBook(book1);
l.addBook(book2);
l.addBook(book3);
l.addBook(book4);
l.addBook(book5);
l.addBook(book6);
l.addBook(book7);
l.addBook(book8);
l.addBook(book9);
l.addBook(book10);
l.addBook(book11);


// this changes all of the values to true instead of just this one
l.checkout(book1);
l.checkout(book11);

l.addBook(book1);

System.out.println(l);
}
}

最佳答案

您存储的是图书馆的状态,而不是每本书的状态。要 checkout 单本书,您需要将状态字段放入图书中,然后设置图书的状态:

public class Book
{
public String status;
// etc...
}

public String checkout(Book c) {
c.status = "true";
return c.status;
}

将 boolean 值存储为字符串通常不是最好的主意 - 通常最好为此使用实际的 boolean 字段。

更简洁(更面向对象)的实现看起来像这样:

public class Book {

private boolean checkedOut = false;

public void checkout() {
checkedOut = true;
}

public void checkin() {
checkedOut = false;
}

public boolean isCheckedOut() {
return checkedOut;
}
}

这保留了使用图书本身管理图书的逻辑,并允许您轻松添加验证,例如如果该字段已设置为 true,则阻止 checkout 。

关于java - (图书馆) checkout 状态返回所有 "true",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31328551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com