我的日志行说动物类是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 :(得分:3)
你需要使用break;
来阻止其他案例执行,因为没有中断它将执行正确的case块语句和“default”代码块
答案 1 :(得分:1)
尝试在所有情况下添加Break语句。
case 3: //
tile=R.drawable.picnictile;
break;
case 4: //
tile=R.drawable.picnictile;
break;
case 5: //
tile=R.drawable.face;
break;
如果你在案件应该做的“事情”之后没有打破它,那么开关就不能正常工作。
答案 2 :(得分: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;
}
答案 3 :(得分:0)
在每种情况下添加 break; 关键字,否则switch也将执行默认语句,结果将是意外的。