用于创建不同类的新对象的Java方法参数
我到处寻找这个问题的解决方案,最后在这里注册,看看是否有人能给我指出一个毫无疑问是逃避我的简单解决方案。我正在参加麻省理工学院的开放课程,自学Java,但我在这个问题上遇到了难题 我有两门课,图书馆和图书。该程序跟踪为每个图书馆创建的书籍、它们的位置以及它们是否已被检出。我获得了无法编辑的库的main方法。相反,必须建立其方法以产生所需的输出。我遇到的问题是确定传递给库中的方法的参数语法,该方法在库的主方法中创建一本新的书 相关图书馆代码:用于创建不同类的新对象的Java方法参数,java,Java,我到处寻找这个问题的解决方案,最后在这里注册,看看是否有人能给我指出一个毫无疑问是逃避我的简单解决方案。我正在参加麻省理工学院的开放课程,自学Java,但我在这个问题上遇到了难题 我有两门课,图书馆和图书。该程序跟踪为每个图书馆创建的书籍、它们的位置以及它们是否已被检出。我获得了无法编辑的库的main方法。相反,必须建立其方法以产生所需的输出。我遇到的问题是确定传递给库中的方法的参数语法,该方法在库的主方法中创建一本新的书 相关图书馆代码: package mitPractice; publi
package mitPractice;
public class Library {
String library_address;
static String library_hours = "Libraries are open daily from 9AM to 5PM";
Book[] catalog;
//List of Methods for Libraries
public Library(String address) {
library_address = address;
}
public static void printOpeningHours() {
System.out.println(library_hours);
}
public void addBook(/*unsure what parameter to add here*/) {
catalog[ (catalog.length + 1)] = //unknown parameter
}
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 ***This block of code is the problem and is uneditable
firstLibrary.addBook(new Book("A Game of Thrones"));
firstLibrary.addBook(new Book("Rama"));
firstLibrary.addBook(new Book("Understanding Space"));
firstLibrary.addBook(new Book("Way of the Clans"));
因此,我的问题是如何使该方法与main方法中给出的代码兼容?我尝试了许多参数组合以传递给addBook(),但似乎没有一个能够传递
图书编码:
package mitPractice;
public class Book {
Boolean isCheckedOut = false;
String book_title;
public Book(String title) {
book_title = title;
}
public void Borrow() {
isCheckedOut = true;
}
public void Return() {
isCheckedOut = false;
}
public boolean isBorrowed() {
if (isCheckedOut == true) {
return true;
} else {
return false;
}
}
public String getTitle() {
return book_title;
}
/*public static void main(String[] args) {
Book example = new Book("A Game of Thrones");
System.out.println("Title: " + example.getTitle());
System.out.println("Borrowed?: " + example.isBorrowed());
example.Borrow();
System.out.println("Borrowed?: " + example.isBorrowed());
example.Return();
System.out.println("Borrowed?: " + example.isBorrowed());
}*/
}
这始终以数组出界结束:
public void addBook(/*unsure what parameter to add here*/) {
catalog[ (catalog.length + 1)] = //unknown parameter
}
实际上,最好使用列表:
public class Library {
List<Book> catalog = new ArrayList<>();
...
}
这始终以数组出界结束:
public void addBook(/*unsure what parameter to add here*/) {
catalog[ (catalog.length + 1)] = //unknown parameter
}
实际上,最好使用列表:
public class Library {
List<Book> catalog = new ArrayList<>();
...
}
您希望参数的类型为Book:
public void addBook(Book newBook) {
catalog[(catalog.length + 1)] = newBook;
}
这将抛出一个ArrayIndexOutOfBoundsException
,因为您试图将一个元素放在数组中最后一个索引之后。您需要跟踪添加了多少本书,并在阵列满时重建阵列。像这样:
private int numberOfBooks = 0;
public void addBook(Book newBook) {
numberOfBooks++;
if(numberOfBooks >= catalog.length) {
// Rebuild array
Book[] copy = new Book[catalog.length * 2]
for(int i=0; i<catalog.length; i++){
copy[i] = catalog[i];
}
catalog = copy;
}
catalog[numberOfBooks] = newBook;
}
你可能有
ArrayList<Book> catalog = new ArrayList<Book>();
为了使用ArrayList
,您需要在包之后的文件开头包含这一行代码>行:
import java.util.ArrayList;
您希望参数的类型为Book:
public void addBook(Book newBook) {
catalog[(catalog.length + 1)] = newBook;
}
这将抛出一个ArrayIndexOutOfBoundsException
,因为您试图将一个元素放在数组中最后一个索引之后。您需要跟踪添加了多少本书,并在阵列满时重建阵列。像这样:
private int numberOfBooks = 0;
public void addBook(Book newBook) {
numberOfBooks++;
if(numberOfBooks >= catalog.length) {
// Rebuild array
Book[] copy = new Book[catalog.length * 2]
for(int i=0; i<catalog.length; i++){
copy[i] = catalog[i];
}
catalog = copy;
}
catalog[numberOfBooks] = newBook;
}
你可能有
ArrayList<Book> catalog = new ArrayList<Book>();
为了使用ArrayList
,您需要在包之后的文件开头包含这一行代码>行:
import java.util.ArrayList;
试试这个代码。这将为一个非常重要的数据结构(称为ArrayList)添加一本书,该数据结构位于java的util包中。程序员必须在class语句之前但在任何package语句之后导入它。当一本书成功添加到ArrayList时,代码还使用BookAPI中的方法打印标题。ArrayList优于数组,因为java.util.ArrayList可以毫无问题地扩展,而数组的大小是固定的,并且不是动态的
查看我修改的编译并运行的库类的代码
package mitPractice;
import java.util.ArrayList;
public class Library {
String library_address;
static String library_hours = "Libraries are open daily from 9AM to 5PM";
ArrayList<Book> books = new ArrayList<Book>();
//List of Methods for Libraries
public Library(String address) {
library_address = address;
}
public static void printOpeningHours() {
System.out.println(library_hours);
}
public void addBook(Book b/*unsure what parameter to add here*/) {
books.add(b); // add the book to the ArrayList
System.out.println("The book: " + b.getTitle() + " was successfully added.");
}
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 ***This block of code is the problem and is uneditable
firstLibrary.addBook(new Book("A Game of Drones"));
firstLibrary.addBook(new Book("Raman Noodles"));
firstLibrary.addBook(new Book("Understanding Space"));
firstLibrary.addBook(new Book("Way of the Yoga Baywatch Babes"));
} // end main
} // end Library class
package实践;
导入java.util.ArrayList;
公共班级图书馆{
字符串库地址;
静态字符串library_hours=“图书馆每天从上午9点到下午5点开放”;
ArrayList books=新建ArrayList();
//库的方法列表
公共图书馆(字符串地址){
图书馆地址=地址;
}
公共静态void printOpeningHours(){
系统输出打印LN(图书馆小时数);
}
public void addBook(Book b/*不确定此处要添加的参数*/){
books.add(b);//将书添加到ArrayList
System.out.println(“已成功添加书籍:+b.getTitle()+”);
}
公共静态void main(字符串[]args){
//创建两个库
图书馆第一图书馆=新图书馆(“主大街10号”);
第二图书馆=新图书馆(“自由街228号”);
//添加四本书***这段代码就是问题所在,不可编辑
addBook(新书(“无人机游戏”);
addBook(新书(“Raman面条”);
addBook(新书(“理解空间”);
addBook(新书(“瑜伽之路”Baywatch Babes”);
}//末端总管
}//结束库类
我希望这对你有所帮助
祝你一切顺利
用户_请尝试此代码。这将为一个非常重要的数据结构(称为ArrayList)添加一本书,该数据结构位于java的util包中。程序员必须在class语句之前但在任何package语句之后导入它。当一本书成功添加到ArrayList时,代码还使用BookAPI中的方法打印标题。ArrayList优于数组,因为java.util.ArrayList可以毫无问题地扩展,而数组的大小是固定的,并且不是动态的
查看我修改的编译并运行的库类的代码
package mitPractice;
import java.util.ArrayList;
public class Library {
String library_address;
static String library_hours = "Libraries are open daily from 9AM to 5PM";
ArrayList<Book> books = new ArrayList<Book>();
//List of Methods for Libraries
public Library(String address) {
library_address = address;
}
public static void printOpeningHours() {
System.out.println(library_hours);
}
public void addBook(Book b/*unsure what parameter to add here*/) {
books.add(b); // add the book to the ArrayList
System.out.println("The book: " + b.getTitle() + " was successfully added.");
}
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 ***This block of code is the problem and is uneditable
firstLibrary.addBook(new Book("A Game of Drones"));
firstLibrary.addBook(new Book("Raman Noodles"));
firstLibrary.addBook(new Book("Understanding Space"));
firstLibrary.addBook(new Book("Way of the Yoga Baywatch Babes"));
} // end main
} // end Library class
package实践;
导入java.util.ArrayList;
公共班级图书馆{
字符串库地址;
静态字符串library_hours=“图书馆每天从上午9点到下午5点开放”;
ArrayList books=新建ArrayList();
//库的方法列表
公共图书馆(字符串地址){
图书馆地址=地址;
}
公共静态void printOpeningHours(){
系统输出打印LN(图书馆小时数);
}
public void addBook(Book b/*不确定此处要添加的参数*/){
books.add(b);//将书添加到ArrayList
System.out.println(“已成功添加书籍:+b.getTitle()+”);
}
公共静态void main(字符串[]args){
//创建两个库
图书馆第一图书馆=新图书馆(“主大街10号”);
第二图书馆=新图书馆(“自由街228号”);
//添加四本书***这段代码就是问题所在,不可编辑
addBook(新书(“无人机游戏”);
addBook(新书(“Raman面条”);
addBook(新书(“理解空间”);
addBook(新书(“瑜伽之路”Baywatch Babes”);
}//末端总管
}//结束库类
我希望这对你有所帮助
祝你一切顺利
用户\u失败者什么不起作用?addBook需要一本书,我想你是误会了