在java中尝试获得正确的开关大小写逻辑

在java中尝试获得正确的开关大小写逻辑,java,object,switch-statement,Java,Object,Switch Statement,嗨,我一直在试图得到这个系统,根据火力的数量,它将决定发射子弹的数量 因此,我创建了一个switch语句,允许它接受前面的项目符号创建点,并随着火力的增加添加新的项目符号创建点。问题是我不知道如何解释没有使用的数字。我尝试使用默认值,但后来我意识到,由于我把它放在顶部,它将经历更高的火力子弹升级,但还没有达到这个数字 有没有办法让它在选择某个值时执行某些操作?(请记住,我确实希望仍然使用原始的bullet升级版)我能想到的唯一其他方法是嵌套许多不同的if或else语句。那是去的路吗 我的代码:

嗨,我一直在试图得到这个系统,根据火力的数量,它将决定发射子弹的数量

因此,我创建了一个switch语句,允许它接受前面的项目符号创建点,并随着火力的增加添加新的项目符号创建点。问题是我不知道如何解释没有使用的数字。我尝试使用默认值,但后来我意识到,由于我把它放在顶部,它将经历更高的火力子弹升级,但还没有达到这个数字

有没有办法让它在选择某个值时执行某些操作?(请记住,我确实希望仍然使用原始的bullet升级版)我能想到的唯一其他方法是嵌套许多不同的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;

    }
开关(火力){
案例30:

对于(int i=-4;i您需要在每个
案例之后添加
break;
,否则它将执行所有操作,直到达到
break;

case n:
    /* some code */
    break;
另一方面,
break;
也可以用于循环中,当您希望在满足循环自身的退出条件之前强制退出循环时


另外,正如Josh M所提到的,有一个
default:
case选项,在默认情况下,如果没有
case:
switch计算结果为
true
我理解你的问题,你可以用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;

    }
案例15:
案例14:
案例13:
案例12:
案例11:
案例10:
案例9:
案例8:
案例7:
案例6:
案例5:

对于(int i=-2;我在每个case的末尾添加
break;
语句添加break语句不会像我想在前面的项目符号位置上添加的那样起作用。实际上,您不需要最后的
break
语句。但是在标准Java中,您不可能希望能够为一系列值选择
case
(虽然我听到传言说它即将到来)。你要么需要列举所有30个案例(可能是
案例30:case29:case28:…
)或者在前两个案例中使用
if/else
逻辑。我忘了我可以只键入案例30:case 29:等等,而不插入任何内容。我还认为值得注意的是,如果其他
案例都不正确,则将执行
default
案例除非我一遍又一遍地复制相同的代码,否则uld不会真正起作用。使用默认方法,我已经说明了我的问题,即如果将其放在上面,为什么它不起作用。正如我所说的,我希望它执行其余的代码(这就是我所说的“获取以前的项目符号创建点”).而且,因为有时它会在4到15之间,我仍然希望它做4到15以下的事情,但当它到15时,我希望它做15到15以下的事情。@mkjrfan我不理解你的问题。如果你的案例是15,那么它将执行15以下的所有案例是的,但是如果它在4到15之间呢?如果它是b,什么都不会发生在这两者之间numbers@mkjrfan你想执行什么代码?与15相同?基本上我想执行数字下的所有代码。例如,如果它是firePower=3,它将执行3,2,1下的代码。如果firePower=10,我希望它执行4,3,2,1下的代码。