我正在努力理解作为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;
我的问题是,这怎么以及为什么会给出错误?我确实对农场的马数有限制,但是我可以(并且正在计划)在调用该方法之前检查它。这对我来说是不好的做法吗?
最高的问候, 若昂席尔瓦
答案 0 :(得分:1)
除了限制马匹数量外,我无法想到任何会导致错误的原因。虽然理论上如果马匹太多,你可能会耗尽堆空间,但这种情况可能会导致你的程序崩溃。
将马匹的数量放入此功能而非外部检查是一种好习惯。这样,就不可能意外地插入比允许的更多的马匹。
答案 1 :(得分:0)
您假设总是有足够的可用内存来分配一个可以再增加一个Horse
空间的数组。
如果抛出OutOfMemoryError
,则不会出现这种情况。