gpt4 book ai didi

java - 如何将元素添加到自定义类型的数组中

转载 作者:行者123 更新时间:2023-12-01 10:14:50 25 4
gpt4 key购买 nike

希望大家都没事,我一直在寻找问题的解决方案,但我所有的搜索似乎都失败了,我想知道如何将新书添加到我在图书馆创建的图书数组中类中,其余的方法我都整理出来了,唯独这个我想不通。

public class Book {

String title;
boolean borrowed;

// Creates a new Book
public Book(String bookTitle) {
title = bookTitle;
}

public void rented() {
borrowed = true;
}
// Marks the book as rented
public void borrowed() {
borrowed = true;
}

// Marks the book as not rented
public void returned() {
borrowed = false;
}

// Returns true if the book is rented, false otherwise
public boolean isBorrowed() {
if(borrowed)
return true;

return false;
}

// Returns the title of the book
public String getTitle() {
return title;
}

public static void main(String[] arguments) {
// Small test of the Book class
Book example = new Book("The Da Vinci Code");
System.out.println("Title (should be The Da Vinci Code): " + example.getTitle());
System.out.println("Borrowed? (should be false): " + example.isBorrowed());
example.rented();
System.out.println("Borrowed? (should be true): " + example.isBorrowed());
example.returned();
System.out.println("Borrowed? (should be false): " + example.isBorrowed());
}

}

public class Library {
String libraryAddress;
Book[] books = new Book[4];
public Library(String address) {
libraryAddress = address;
}



public static void main(String[] args) {
// Create two libraries
Library firstLibrary = new Library("10 Main St.");
Library secondLibrary = new Library("228 Liberty St.");

// Add four books to the first library
firstLibrary.addBook(new Book("The Da Vinci Code"));
firstLibrary.addBook(new Book("Le Petit Prince"));
firstLibrary.addBook(new Book("A Tale of Two Cities"));
firstLibrary.addBook(new Book("The Lord of the Rings"));

// Print opening hours and the addresses
System.out.println("Library hours:");
printOpeningHours();
System.out.println();

System.out.println("Library addresses:");
firstLibrary.printAddress();
secondLibrary.printAddress();
System.out.println();

// Try to borrow The Lords of the Rings from both libraries
System.out.println("Borrowing The Lord of the Rings:");
firstLibrary.borrowBook("The Lord of the Rings");
firstLibrary.borrowBook("The Lord of the Rings");
secondLibrary.borrowBook("The Lord of the Rings");
System.out.println();

// Print the titles of all available books from both libraries
System.out.println("Books available in the first library:");
firstLibrary.printAvailableBooks();
System.out.println();
System.out.println("Books available in the second library:");
secondLibrary.printAvailableBooks();
System.out.println();

// Return The Lords of the Rings to the first library
System.out.println("Returning The Lord of the Rings:");
firstLibrary.returnBook("The Lord of the Rings");
System.out.println();

// Print the titles of available from the first library
System.out.println("Books available in the first library:");
firstLibrary.printAvailableBooks();
}

private void returnBook(String bookTitle) {
for(int i = 0; i<books.length; i++)
{
if(!(books[i].title == bookTitle))
continue;
else if(books[i].title == bookTitle && books[i].isBorrowed() == true)
books[i].returned();


}
}

private void printAvailableBooks() {
for(int i = 0; i<books.length; i++)
{
System.out.println("Avaiable book: " + books[i].title);
}

}

private void borrowBook(String bookTitle) {

for(int i = 0; i<books.length; i++)
{
if((books[i].title != bookTitle))
continue;
else if(books[i].title == bookTitle && books[i].isBorrowed() == false)
{
books[i].borrowed();
System.out.println("You successfully borrowed " + bookTitle);

}
else
System.out.println("Sorry, this book is already borrowed.");
}

}

public void printAddress() {
System.out.println(libraryAddress);
}

public static void printOpeningHours() {

System.out.println("Libraries are open daily from 9am to 5pm.");
}

public void addBook(Book book) {

// here comes my issue
}
}

最佳答案

一个可能的选择是检查第一个null,并用书填充它。

public void addBook(Book book) {
for (int i = 0; i < books.length; i++) {
if (books[i] == null) {
books[i] = book;
return;
}
}
}

这将填充您之前创建的 books 数组,但是一旦您填充了该数组;它不会调整数组的大小。您可以使用 Arrays.copyOf(T[], int)创建一个更大的新数组。就像,

public void addBook(Book book) {
for (int i = 0; i < books.length; i++) {
if (books[i] == null) {
books[i] = book;
return;
}
}
books = Arrays.copyOf(books, books.length + 1);
books[books.length - 1] = book;
}

使用 ArrayList而不是数组1

List<Book> books = new ArrayList<>();
public void addBook(Book book) {
books.add(book);
}

1重构其余代码,作为读者的练习。

关于java - 如何将元素添加到自定义类型的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35962231/

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