繁体   English   中英

试图在Java中获得正确的开关案例逻辑

[英]Trying to get switch case logic correct in java

嗨,我一直在尝试获得此系统,在此系统中,将根据火力的数量确定发射子弹的数量。

因此,我创建了一个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;

    }

您需要添加break; 在每种case ,否则它将执行所有操作,直到达到break;为止break;

case n:
    /* some code */
    break;

附带说明一下, break; 如果您想在退出条件之前强制退出循环,也可以在循环中使用它。

而且,正如Josh M所提到的,如果没有case: ,则default:情况下可以使用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;

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM