2

开关壳体为了提高水平后10 ProjectilesDestroyed,我已设置开关盒,其中用于所述第一级后10个抛射销毁第二电平显示,但是从第二电平其每2 projectilesDestroyed并且还增加水平超过10的增加,我应该怎样让它10至增加水平的差异。 这是我如何实施问题与在机器人

if (++_projectilesDestroyed > 5) 
      { 
       _projectilesDestroyed = 0; 

      // for(level=1; level<12; level++) 
       switch(level) 
        { 
        case 1: 
         _projectilesDestroyed = 10; 
        System.out.println("case 1"); 
             break; 
        case 2: 
         _projectilesDestroyed = 20; 
         System.out.println("case 2"); 
         break; 
        case 3: 
         _projectilesDestroyed = 30; 
         System.out.println("case 3"); 
         break; 
        case 4: 
         _projectilesDestroyed = 40; 
         System.out.println("case 4"); 
         break; 
        case 5: 
         _projectilesDestroyed = 50; 
             break; 
        case 6: 
         _projectilesDestroyed = 60; 
            break; 
        case 7: 
         _projectilesDestroyed = 70; 
            break; 
        case 8: 
         _projectilesDestroyed = 80; 
             break; 
        case 9: 
         _projectilesDestroyed = 90; 
            break; 
        case 10: 
         _projectilesDestroyed = 100; 
         System.out.println("case 10"); 
         break; 
        default: break; 
        } 
       addLevel(); 

addLevel()方法。

public void addLevel() { 
    level = level + 1; 
       showLevel(level); 
      } 

即使如果我加上break;所有从2级的情况下,其得到更新,每2 projectilesDestroyed,但我想,当它达到10

+0

在这种情况下,如果你根据你目前的水平只能分配值,你可以使用'_projectilesDestroyed = level * 10'或者像这样'int [] projectilesDestroyed = {10,20,... 100}'' –

+0

预先填入一个数组如果我正确地得到你,你说你的'level'是每摧毁2架射弹增加。我认为现在的问题不是你的代码发布了,而是调用'addLevel()'方法的代码。 –

+0

你已经完成了代码或仍然在等待答案? –

回答

0

你是case块后失踪突破satements。

 case 1: 
        _projectilesDestroyed = 10; 
        System.out.println("case 1"); 
        // missing break here and in the following case staments 

如果你不把break语句的情况后,再下一个case语句将顺序等执行。

0

你忘了添加break陈述每个case。这将是一个倒闭。应使用

case 1: 
    _projectilesDestroyed = 10; 
    System.out.println("case 1"); 
    break; // to prevent falling through 

JLS 14.11

如果代码是不落空的情况下,以这种方式的话,那么break语句。

如果其中一个case常量等于表达式的值,那么我们说case匹配,并且在switch块中匹配case标签之后的所有语句(如果有的话)按顺序执行。

0
case 1: 
      _projectilesDestroyed = 10; 
      System.out.println("case 1"); 
    break; // missing 

你缺少对每个案例break声明。

每个break语句结束封闭的switch语句。控制流程继续执行开关块后的第一条语句。该break语句是必要的,因为没有他们,在开关块语句告吹:该文档

检查的详细信息

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

+0

感谢您的回复请看到我更新的帖子@Raghunandan – samm

+0

@jack你的更新并不反映添加break语句。检查文档和示例'SwitchDemoFallThrough'。确保你有所有情况下的休息。 – Raghunandan

+0

@jack你打电话给'addLevel'外面的开关。 – Raghunandan

0

告吹........

由于每switch docs

每个break语句都会终止封闭的switch语句。控制流程继续执行开关块后的第一条语句。

的break语句是必要的,因为没有他们,在开关块语句告吹:

你的每一种情况下

switch(level) 
        { 
        case 1: 
         _projectilesDestroyed = 10; 
        System.out.println("case 1"); 
        break; 
+0

这只适用于第一种情况,从第二级更新为每2个ProjectilesDestroyed。 @Baadshah – samm

0

我猜你的问题出在之后添加break第一个if声明:

if (++_projectilesDestroyed > 5) 

一旦你有des超过5发射弹的特洛伊木马,你将永远进入该区块并增加你的level。你可能会需要一些不同的变量,在这里,像这样

if(++_projectilesDestroyed > _projectilesRequired) 

和设置您的_projectilesRequired根据您switch-case上述声明或使用_projectilesRequired = level * 10