Java Switch语句混乱

齐皮

在我的应用程序(这是一个Android游戏)中,我有一种方法可以检查玩家是否还活着,如果没有,则运行动画并结束游戏。

当前有3种不同的动画可供选择,具体取决于玩家的输赢方式。

因此,例如,它们可能从屏幕上掉下来,撞到鸟或被从天上掉下来的东西压扁。每个人都有不同的动画。

基本上,我正在做的是这样的:

当玩家输球时,我设置了发生这种情况的方法,例如,如果它们被鸟击中:

hero.setKilledBy(hero.HITBIRD);

然后,通过在我的checkGameOver()方法内进行切换来执行此操作。但是,我很困惑。我必须像这样检查它:(请注意,在我的情况下,我必须输入0、1、2):

switch(hero.killedBy()){

    case 0: {                            
        fallOffScreenAnimation();break;
    }

    case 1: {
        hitBirdAnimation();break;
    }
    case 2: {
        squashedAnimation();
    }
}

在我的英雄对象的类中,我有以下方法

int killedBy;
final int FELLOFFSCREEN = 0;
final int HITBIRD = 1;
final int SQUASHED = 2;

int killedBy(){

    return killedBy;

}

int setKilledBy(int value){

    killedBy = value;

}

所以,我的问题是,为什么我不能做这样的事情:

switch(hero.killedBy()){

    case hero.HITBIRD {
        fallOffScreenAnimation();break;
    }

 //............... and so on.......

在switch语句中,无法识别我的英雄对象吗?为什么是这样?如果我仍然键入它(case hero.HITBIRD),则会出现此错误:

case表达式必须是常量表达式

显然,出于可读性考虑,我宁愿使用我设置的变量名,而不是原始数值。

尼伯(JB Nizet)

您只能在情况下使用常量。您的变量是实例变量,而不是常量。每个英雄都有这些变量的副本。它们应声明为:

static final int FELLOFFSCREEN = 0;
static final int HITBIRD = 1;
static final int SQUASHED = 2;

您应该使用类名而不是对象来访问它们:

case Hero.HITBIRD {

(假设班级名称为Hero)。

请注意,您可能应该用枚举替换这些常量:

public enum HeroDeathCause {
    FELL_OFF_SCREEN, HIT_BIRD, SQUASHED
}

这是更安全的类型,并且更具自我描述性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java switch语句-行为混乱

来自分类Dev

Java Switch语句

来自分类Dev

Java中的Switch语句帮助

来自分类Dev

内嵌switch语句java吗?

来自分类Dev

Java中switch语句的用法

来自分类Dev

Android Java Switch语句失败-堆大小?

来自分类Dev

重用switch语句中的代码(Java)

来自分类Dev

SWITCH语句中的Java方括号错误?

来自分类Dev

Java-Switch语句和花括号

来自分类Dev

Java Switch语句中的多个变量

来自分类Dev

在Java中将if-else-if语句转换为switch语句

来自分类Dev

Java switch语句有两种情况还是if语句?

来自分类Dev

Python中C类型Switch语句的实现混乱

来自分类Dev

Java-避免使用静态函数的switch语句

来自分类Dev

在switch语句中使用java.lang.Class <?>

来自分类Dev

Java中的switch语句接受哪些数据类型

来自分类Dev

Java 8,如何使用流实现switch语句?

来自分类Dev

在Java中使用Switch语句时遇到问题

来自分类Dev

Java Switch语句:创建计算器错误

来自分类Dev

switch语句中的Java非恒定表达式

来自分类Dev

带增量运算符的Java Switch语句

来自分类Dev

Java:使用switch语句执行do-while循环

来自分类Dev

Java开头带有default子句的switch语句

来自分类Dev

如何避免Java中的switch-case语句

来自分类Dev

在Java中重构大型switch语句的最佳方法是什么?

来自分类Dev

Java:对多表达式使用switch语句吗?

来自分类Dev

在switch语句中使用java.lang.Class <?>

来自分类Dev

使用switch语句向jbuttons java提供动作

来自分类Dev

Java switch语句在枚举上变为默认值