Java,在数组上插入Object的方法,返回一个布尔值

时间:2012-12-11 02:19:59

标签: java arrays validation boolean

我正在努力理解作为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;

我的问题是,这怎么以及为什么会给出错误?我确实对农场的马数有限制,但是我可以(并且正在计划)在调用该方法之前检查它。这对我来说是不好的做法吗?

最高的问候, 若昂席尔瓦

2 个答案:

答案 0 :(得分:1)

除了限制马匹数量外,我无法想到任何会导致错误的原因。虽然理论上如果马匹太多,你可能会耗尽堆空间,但这种情况可能会导致你的程序崩溃。

将马匹的数量放入此功能而非外部检查是一种好习惯。这样,就不可能意外地插入比允许的更多的马匹。

答案 1 :(得分:0)

您假设总是有足够的可用内存来分配一个可以再增加一个Horse空间的数组。

如果抛出OutOfMemoryError,则不会出现这种情况。