Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于创建不同类的新对象的Java方法参数_Java - Fatal编程技术网

用于创建不同类的新对象的Java方法参数

用于创建不同类的新对象的Java方法参数,java,Java,我到处寻找这个问题的解决方案,最后在这里注册,看看是否有人能给我指出一个毫无疑问是逃避我的简单解决方案。我正在参加麻省理工学院的开放课程,自学Java,但我在这个问题上遇到了难题 我有两门课,图书馆和图书。该程序跟踪为每个图书馆创建的书籍、它们的位置以及它们是否已被检出。我获得了无法编辑的库的main方法。相反,必须建立其方法以产生所需的输出。我遇到的问题是确定传递给库中的方法的参数语法,该方法在库的主方法中创建一本新的书 相关图书馆代码: package mitPractice; publi

我到处寻找这个问题的解决方案,最后在这里注册,看看是否有人能给我指出一个毫无疑问是逃避我的简单解决方案。我正在参加麻省理工学院的开放课程,自学Java,但我在这个问题上遇到了难题

我有两门课,图书馆和图书。该程序跟踪为每个图书馆创建的书籍、它们的位置以及它们是否已被检出。我获得了无法编辑的库的main方法。相反,必须建立其方法以产生所需的输出。我遇到的问题是确定传递给中的方法的参数语法,该方法在方法中创建一本新的

相关图书馆代码:

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需要一本书,我想你是误会了