如果有类似的问题,我很抱歉,尝试搜索但没有找到适合我使用的适当回复。
我有 5 个类继承自一个类 (spaceshipclass),我需要从每个类中创建随机对象并将它们存储在二叉树中。 对于每个对象,两个随机整数如下面的代码所示。
public class spaceships
{
int cost;
int combatPower;
private Random rand = new Random();
public spaceships(int cost, int combatPower)
{
this.cost = cost;
this.combatPower = combatPower;
cost = rand.Next(10000, 1000000);
combatPower = rand.Next(20, 100);
}
}
public class Patrol : spaceships
{
public Patrol (int cost,int combatPower) : base(cost,combatPower)
{
}
}
第二个类是继承类之一。
希望有人能帮助我。
答案 0 :(得分:1)
所需的功能与发布的代码之间似乎存在脱节,因为您的 spaceships
类在其构造函数中接受了 cost
和 combatPower
,但随后忽略了这一点并进行了计算这些价值观本身。因此,我将忽略该特定实现,并在构建随机对象之前继续计算这些值,正如您的问题标题所要求的那样。请记住,我的解决方案允许您完全删除飞船类的私有 Random rand
字段。
您可以使用简单的 switch
语句来确定要创建哪种类型的飞船,然后将它们添加到您的集合中(您提到了二叉搜索树,但这是一个在这里并不重要的实现细节,只要它的类型为 spaceships
以支持您的问题提到的多态性。
Random rand = new Random();
for (int i = 0; i < numSpaceshipsRequired; i++)
{
int typeOfSpaceship = rand.Next(0, 5);
int cost = rand.Next(10000, 1000000);
int combatPower = rand.Next(20, 100);
switch (typeOfSpaceship)
{
case 0:
collection.Add(new Patrol(cost, combatPower));
break;
case 1:
collection.Add(new Cruiser(cost, combatPower));
break;
case 2:
collection.Add(new Frigate(cost, combatPower));
break;
case 3:
collection.Add(new Fighter(cost, combatPower));
break;
case 4:
collection.Add(new Stealth(cost, combatPower));
break;
}
}