这可能是一个非常愚蠢的问题,但我想我会试着问!基本上问题是这样的:我可以在我的 setter 中使用 switch 语句吗?
这就是我正在做的事情:我创建了一个具有 healthPoints、描述、损坏和类型属性的 Monster 类,其中类型是一个枚举。在我的驱动程序中,我编写了几行代码,这些代码将从枚举值中随机生成一个怪物类型,并使用该类型创建一个新的怪物。
问题是当我显示怪物统计数据时,它显示 healthPoints 和伤害为 0,描述为空。当我尝试使用默认 Monster 构造函数运行程序时,它崩溃并显示 NullPointerException 错误。
我认为错误出在我的 setter 或构造函数中。每个 setter 里面都有一个 switch case,它根据随机生成的怪物类型设置一定数量的 healthPoints、伤害和具体描述。我不确定在 setter 中使用 switch 语句是否可以,因为我以前从未真正需要这样做。
这是我的一些代码。首先,我的构造函数。
public Monster(int healthPoints, monsterType type, int damage, String description)
{
setHealthPoints(healthPoints);
setType(type);
setDamage(damage);
setDescription(description);
}
public Monster(monsterType type)
{
setType(type);
}
Run Code Online (Sandbox Code Playgroud)
以下是其中一位二传手。
public void setHealthPoints(int healthPoints)
{
switch(type)
{
case DROW:
healthPoints = 30;
break;
case LICH:
healthPoints = 40;
break;
case ORC:
healthPoints = 20;
break;
case OWLBEAR:
healthPoints …Run Code Online (Sandbox Code Playgroud)