我需要使用单个数组来跟踪游戏的得分,其中索引是游戏的级别。在父类中,允许玩家10个级别。在儿童班中,他们获得了40个额外的等级,总计达到50个等级。
本章是关于继承的,它们还介绍了构造函数。父类和子类中的构造函数都可以更改单个数组的大小吗?
我尝试声明数组的大小为50,然后在每个构造函数中为我需要的大小分配内存。父类和子类分别为[10]和[50]。
答案 0 :(得分:0)
在Java中,数组是不可扩展的,因此不能仅仅“使用1个具有2种不同大小的数组”。您可能要使用ArrayList
:
List<Integer> list = new ArrayList<>();
还有一个问题要问:您确定需要继承此任务吗?您可以简单地创建所需大小的数组:
List<Integer> list = new ArrayList<>(40);
但是,那不是必须的。如果没有足够的空间,该列表将根据需要增长,因此您不必担心。
答案 1 :(得分:0)
是的,在构造函数中,您应该只能像array = new int[#]
此外,也许不是您问题的确切答案,但是您可以使用List而不是数组。 Java列表可调整大小。
因此,您可以将其定义为int[]
而不是List<Integer>
,而不必担心大小。
答案 2 :(得分:0)
层次结构中的最低级别必须为子类提供定义数组大小的选项。
例如:
List No: 1 (b'Armadale (WA)', 6112, 8.)
List No: 2 (b'Armidale (NSW)', 2350, 8.5)
List No: 3 (b'Newport', 3015, 6.5)
List No: 4 (b'Townsville Jobseekers', 4814, 7.5)
List No: 5 (b'Albany', 6330, 6.5)
List No: 6 (b'Atherton', 4883, 6.5)
List No: 7 (b'Alice Springs', 870, 8.5)
List No: 8 (b'Ayr', 4807, 6.5)
List No: 9 (b'Ararat', 3377, 7.5)
List No: 10 (b'Airport West', 3042, 6.5)
以及子类:
package io.medev.stackoverflow;
public class Game1 {
private final int[] levels;
public Game1() {
this(0);
}
protected Game1(int additionalLevels) {
this.levels = new int[10 + additionalLevels];
}
}
就像已经提到的其他人一样,在这种情况下,我通常建议使用列表而不是数组。