2014-02-25 51 views
1

有人能解释我为什么我的循环从0到7?我只需要在前三种情况下获得,但程序正在全部完成。代码在show()方法中。开关执行所有的case语句

for(brojac=0; brojac<3; brojac++){ 

    switch(brojac){ 
    case 1: 
     figura1.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura1); 
     System.out.println("1"); 
    case 2: 
     figura2.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura2); 
     System.out.println("2"); 
    case 3: 
     figura3.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura3); 
     System.out.println("3"); 
    case 4: 
     figura4.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura4); 
     System.out.println("4"); 
    case 5: 
     figura5.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura5); 
     System.out.println("5"); 
    case 6: 
     figura6.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura6); 
     System.out.println("6"); 
    case 7: 
     figura7.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura7); 
     System.out.println("7"); 

    } 
} 
+1

你忘了添加“break”吗?每个大小写之后的语句? – midhunhk

+0

是的,回到教科书并查看“switch”语句的描述。 –

+0

可能的重复[为什么我们需要打破案例陈述?](http://stackoverflow.com/questions/2710300/why-do-we-need-break-after-case-statements) – Raedwald

回答

4

因为缺失。在每种情况下,你需要break关键字。有关详细说明,请参阅switch statement java tutorial

例如

for(brojac=0; brojac<3; brojac++){ 

switch(brojac){ 
case 1: 
    figura1.setPosition(pomx[random], pomy[random]); 
    stage.addActor(figura1); 
    System.out.println("1"); 
    break; /// Break here 

case 2: 
    figura2.setPosition(pomx[random], pomy[random]); 
    stage.addActor(figura2); 
    System.out.println("2"); 
    break; /// Break here 
case 3: 
    figura3.setPosition(pomx[random], pomy[random]); 
    stage.addActor(figura3); 
    System.out.println("3"); 
    break; /// Break here 
case 4: 
    figura4.setPosition(pomx[random], pomy[random]); 
    stage.addActor(figura4); 
    System.out.println("4"); 
    break; /// Break here 
case 5: 
    figura5.setPosition(pomx[random], pomy[random]); 
    stage.addActor(figura5); 
    System.out.println("5"); 
    break; /// Break here 
case 6: 
    figura6.setPosition(pomx[random], pomy[random]); 
    stage.addActor(figura6); 
    System.out.println("6"); 
    break; /// Break here 
case 7: 
    figura7.setPosition(pomx[random], pomy[random]); 
    stage.addActor(figura7); 
    System.out.println("7"); 
    break; /// Break here 
} 
} 

否则,如果上述情况之一被评估为true的其他情形将被执行。

1

这就是Java's switch报表的工作原理。

一旦他们中的一个匹配,他们就会“落入”案件。在所有情况下,您需要添加break;

for(brojac=0; brojac<3; brojac++){ 

    switch(brojac){ 
    case 1: 
     figura1.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura1); 
     System.out.println("1"); 
     break; 
    case 2: 
     figura2.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura2); 
     System.out.println("2"); 
     break; 
    case 3: 
     figura3.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura3); 
     System.out.println("3"); 
     break; 
    case 4: 
     figura4.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura4); 
     System.out.println("4"); 
     break; 
    case 5: 
     figura5.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura5); 
     System.out.println("5"); 
     break; 
    case 6: 
     figura6.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura6); 
     System.out.println("6"); 
     break; 
    case 7: 
     figura7.setPosition(pomx[random], pomy[random]); 
     stage.addActor(figura7); 
     System.out.println("7"); 
     break; 

    } 
}