2013-01-19 71 views
0

我的日志行说animalclass是4,但不是去“情况4”它返回默认值。它适用于案例2。这怎么可能?提前致谢。开关案例不按预期工作

public int gettile(int animalclass) { 
    Log.e("gettile", "animalclass = " + animalclass); 
    switch (animalclass) { 
    case 1: // 
     tile=R.drawable.picnictile; 

     break; 

    case 2: // 

     tile=R.drawable.picnictile; 

     break; 

    case 3: // 

     tile=R.drawable.picnictile; 

    case 4: // 

     tile=R.drawable.picnictile; 

    case 5: // 

     tile=R.drawable.face; 


    default: 
     Log.e("gettile", "failed!!!!!!!!!! = " + animalclass); 
     tile=R.drawable.rainbowtile;  

     break; 
    } 
    Log.e("gettile", "returning = " + tile); 
    return tile; 
} 
+0

对不起,我把这个蛋从我脸上抹掉.........谢谢你们。 –

+0

不客气。只需将此问题标记为已回答:) – BennX

回答

3

你需要使用break;停止其他情况下执行,因为没有打破它会执行正确的情况下,语句块也“默认”的代码块

1

尝试所有情况后加入歇statemenet。

case 3: // 
tile=R.drawable.picnictile; 
break; 
case 4: // 
tile=R.drawable.picnictile; 
break; 
case 5: // 
tile=R.drawable.face; 
break; 

如果你不打破它的情况下应该做的事情,交换机不工作正确。

1

您忘记了在default关键字前添加break关键字。 试试这个:

public int gettile(int animalclass) { 
    Log.e("gettile", "animalclass = " + animalclass); 
    switch (animalclass) { 
    case 1: // 
     tile=R.drawable.picnictile; 

     break; 

    case 2: // 

     tile=R.drawable.picnictile; 

     break; 

    case 3: // 

     tile=R.drawable.picnictile; 
    break; 
    case 4: // 

     tile=R.drawable.picnictile; 
    break; 
    case 5: // 

     tile=R.drawable.face; 

    break; 
    default: 
     Log.e("gettile", "failed!!!!!!!!!! = " + animalclass); 
     tile=R.drawable.rainbowtile;  

     break; 
    } 
    Log.e("gettile", "returning = " + tile); 
    return tile; 
} 
0

添加休息;关键字后,否则开关将执行默认声明也会导致意外。