当前位置: 首页 > 知识库问答 >
问题:

对象的数组OutOfBounds异常[重复]

魏波娃
2023-03-14

我(相对)是java新手,我对数组、类/对象等有一些(次要)了解,但我找不到解决这个错误的方法。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at books$Bookshop.addBook(books.java:42)
at books.main(books.java:57)

我的全部代码:

public class books {

static class Book{
    private double price;
    private String title;
    private String isbn;

    public Book(double price, String title, String isbn){
        this.price = price;
        this.title = title;
        this.isbn = isbn;
    }

    public Book makeBook(double price, String title, String isbn){
        Book new_book = new Book(price, title, isbn);
        return new_book;
    }

    public String toString(){
        String string = this.title + ", " + this.isbn + ", " + this.price;
        return string;
    }
}

static class Bookshop{
    private int stock_max;
    Book[] stock = new Book[stock_max];
    private int book_counter;

    public Bookshop(int size){
        this.stock_max = size;
    }

    public void printBooks(){
        for(int i=0; i<stock.length; i++){
            System.out.println(stock[i].toString());
        }
    }

    public void addBook(double p, String t, String i){
        this.stock[book_counter] = new Book(p,t,i);
    }

    public void searchBook(String title){
        for(int i=0; i<stock.length; i++){
            if(title.equals(stock[i].title)){
                System.out.println("Book in Stock");
            }
        }
    }
}


public static void main(String[] args) {
    Bookshop shop = new Bookshop(10);
    shop.addBook(29.90, "title", "24578");
    shop.addBook(19.59, "second", "12345");
    shop.addBook(69.99, "third title", "47523");
    shop.addBook(4.99, "title 4", "98789");
    shop.printBooks();

    shop.searchBook(args[0]);
}

}

我知道ArrayIndexOutOfBoundsException意味着它试图在一个不存在的索引上生成一些东西。但我将书店的规模设置为10,然后只添加了4本书(第一次出现错误)。。。

共有1个答案

满雨石
2023-03-14
private int stock_max;
Book[] stock = new Book[stock_max];
private int book_counter;

public Bookshop(int size){
    this.stock_max = size;
}

这个问题是stock设置为newbook[stock_max]这一行之前。stock_max=size,这是由于Java构造函数和初始化的方式<与所有未初始化的ints一样,code>stock_max从0开始,因此stock设置为空数组。要解决这个问题,只需将初始化移到构造函数中:

private int stock_max;
Book[] stock;
private int book_counter;

public Bookshop(int size){
    this.stock_max = size;
    this.stock = new Book[stock_max];
}
 类似资料:
  • 我在使用recycler视图启动活动时出错,因此我有3个文件java类、一个适配器和要执行的活动。 java类只是一个具有3个变量的简单对象 回收器视图的适配器 以及活动 我得到的错误是: 我在一个空项目上做了同样的配置,一切看起来都是正确的,

  • 我需要求一个对象数组中类似“value”的值之和。 样本输入 预期产量 我试过跟随,但没有达到预期效果

  • 如何在两个属性之后对对象数组进行分组?在以下情况下是否可以使用减少? 例如:按国家和城市将以下数组分组,并对“年龄”属性求和: /*预期结果:*/

  • 我知道有几个类似的问题,但没有一个与我的问题相符。我有来自服务器的JSON响应,如下所示: 我的模型课是这样的: DataBeacon有信标和网桥对象列表: } 下面是我获取json的界面: 在我看来,一切都应该正常工作,但我仍然遇到了异常:。我不知道为什么——模型的结构应该是正确的。

  • 我有一个数组。如何按类型、名称和大小以及递增量找到双重许可。增加数量后删除相同的。

  • 我有这个初始数组,希望根据和提取重复航班 我写了这个,但我只能得到第一个重复的,看起来不是很漂亮。 有什么建议吗?