试图在java中使switch case逻辑正确

时间:2013-09-14 02:02:45

标签: java object switch-statement

嗨,我一直试图让这个系统根据火力的数量确定射击子弹的数量。

所以我创建了一个switch语句,它允许它获取之前的子弹创建点,并在火力增加时添加新的子弹。问题是我不知道如何计算未使用的数字。我尝试使用默认值,然后我意识到,因为我把它放在顶部,它将通过更高的火力子弹升级,但没有达到这个数字。

有没有办法让它像选择一个值那样做某些? (请记住,我确实希望仍然使用原始的子弹升级)我能想到的另一种方法是嵌套许多不同的if或else语句。这会是

的方式吗?

我的代码:

    switch(firePower){

    case 30:
        for(int i = -4; i <=4; i++){
            Bullet a = new Bullet((int)playerx,(int)playery+i,-i);
            bullet.add(a);
        }
    case 15:
        for(int i = -2; i <=2; i++){
            Bullet a = new Bullet((int)playerx,(int)playery+i,-i);
            bullet.add(a);
        }

    case 4:
        Bullet h = new Bullet((int)playerx, (int)playery-10, 0);
        Bullet i = new Bullet((int)playerx, (int)playery-12, 0);
        bullet.add(h);
        bullet.add(i);
    case 3:
        Bullet f = new Bullet((int)playerx, (int)playery-6, 0);
        Bullet g = new Bullet((int)playerx, (int)playery-8, 0);
        bullet.add(f);
        bullet.add(g);
    case 2:
        Bullet d = new Bullet((int)playerx, (int)playery+4, 0);
        Bullet e = new Bullet((int)playerx, (int)playery-4, 0);
        bullet.add(d);
        bullet.add(e);
    case 1:
        Bullet b = new Bullet((int)playerx, (int)playery+2, 0);
        Bullet c = new Bullet((int)playerx, (int)playery-2, 0);
        bullet.add(b);
        bullet.add(c);
    case 0:
        Bullet a = new Bullet((int)playerx, (int)playery, 0);
        bullet.add(a);
        break;

    }

2 个答案:

答案 0 :(得分:2)

您需要在每个break;之后添加case,否则它会执行所有内容,直到达到break;

case n:
    /* some code */
    break;

在旁注中,如果您想在强制退出循环之前强制退出循环,则break;也可以在循环中使用。

此外,正如Josh M所提到的,如果没有default:开关评估为case:,则默认情况下可以使用true个案例选项。

答案 1 :(得分:0)

我理解你的问题,你可以用switch语句做什么。

 case 15:
 case 14:
 case 13:
 case 12:
 case 11:
 case 10:
 case 9:
 case 8:
 case 7:
 case 6:
 case 5:
        for(int i = -2; i <=2; i++){
            Bullet a = new Bullet((int)playerx,(int)playery+i,-i);
            bullet.add(a);
        }

    case 4:
        Bullet h = new Bullet((int)playerx, (int)playery-10, 0);
        Bullet i = new Bullet((int)playerx, (int)playery-12, 0);
        bullet.add(h);
        bullet.add(i);
    case 3:
        Bullet f = new Bullet((int)playerx, (int)playery-6, 0);
        Bullet g = new Bullet((int)playerx, (int)playery-8, 0);
        bullet.add(f);
        bullet.add(g);
    case 2:
        Bullet d = new Bullet((int)playerx, (int)playery+4, 0);
        Bullet e = new Bullet((int)playerx, (int)playery-4, 0);
        bullet.add(d);
        bullet.add(e);
    case 1:
        Bullet b = new Bullet((int)playerx, (int)playery+2, 0);
        Bullet c = new Bullet((int)playerx, (int)playery-2, 0);
        bullet.add(b);
        bullet.add(c);
    case 0:
        Bullet a = new Bullet((int)playerx, (int)playery, 0);
        bullet.add(a);
        break;

    }