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;
}
4

4 に答える 4

3

break;ブレークなしで正しいケースブロックステートメントと「デフォルト」コードブロックを実行するため、他のケースの実行を停止するために使用する必要があります

于 2013-01-19T10:56:27.713 に答える
1

すべてのケースの後に Break ステートメントを追加してみてください。

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

ケースが行うべき「こと」の後にそれを壊さないと、スイッチは正しく機能しません。

于 2013-01-19T10:57:22.103 に答える
1

breakキーワードの前にキーワードを追加するのを忘れましたdefault。これを試してください:

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;
}
于 2013-01-19T10:57:52.037 に答える
0

休憩を追加します。そうしないと、switch はdefaultステートメントも実行し、結果は予期しないものになります。

于 2013-01-19T11:15:24.137 に答える