1

我很难理解作为 Java OOP 介绍项目的一部分分配给我的作业。所有名称都已更改,未完全翻译。我被要求完成以下方法:

public boolean insertHorse(Horse horse) {
return true;
}

方法签名不能更改,我应该将马添加到该方法所在类的马数组中,如果插入成功则返回 true,否则返回 false。所以这就是我所做的:

    public boolean insertHorse(Horse horse) {

    //Create a temp array with length equal to h
    Horse[] temp = new Horse[this.horses.length+1];

    //copy the horses to the temp array
    for (int i = 0; i < horses.length; i++){
        temp[i] = horses[i];
    }

    //add the horse on the temp array
    temp[temp.length-1] = horse;

    //change the reference of the old array to the temp one
    veiculos = temp;
    return true;

我的问题是,这如何以及为什么会给出错误?我确实对农场的马匹数量有限制,但是我可以(并且正在计划)在调用该方法之前对其进行检查。这是我的坏习惯吗?

致以最诚挚的问候,若昂·席尔瓦

4

2 回答 2

1

我想不出任何理由这应该返回 false,除了马的数量限制。尽管从理论上讲,如果马太多,您可能会用完堆空间,但这种情况可能会导致您的程序崩溃。

将检查马匹的数量放在这个函数中而不是在它之外是一个好习惯。这样一来,就不会意外插入比允许更多的马。

于 2012-12-11T02:29:34.533 回答
0

你假设总是有足够的内存来分配一个有空间的数组Horse

一种不成立的情况OutOfMemoryError是抛出 an 。

于 2012-12-11T02:28:37.670 回答