2013-01-19 105 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

添加休息;關鍵字後,否則開關將執行默認聲明也會導致意外。