Som*_*one 6 java eclipse switch-statement
我使用Eclipse收到此错误.
重复的局部变量斗篷
我真的不明白为什么我会遇到这样的错误.这是我的代码:
switch (frame) { // frame is an integer
case 0:
Sprite cape = modules.get(Module.CAPE);
//cape.setRegion(region);
cape.translateY(+1);
break;
case 1:
Sprite cape = modules.get(Module.CAPE);
//cape.setRegion(region);
cape.translateY(-1);
break;
default:
throw new IllegalArgumentException(
"Undefined frame number: " + frame);
}
Run Code Online (Sandbox Code Playgroud)
为什么cape变量对于每种情况都是本地的,而不是switch语句?
fge*_*fge 12
整个switch语句与任何其他语句一样是一个代码块.但是你可以在代码块中创建代码块,所以:
case 0: {
// code here
}
case 1: {
// other code here
}
Run Code Online (Sandbox Code Playgroud)
(如果switch在这方面特别对待你,你无法做到贯彻)
每个案例都在同一个块中,具体来说{}就是switch声明.即使不同的情况定义相同的变量,这也是同一个块.
通过添加{}s 为每个案例定义自己的块:
case 0:
{
Sprite cape = modules.get(Module.CAPE);
//cape.setRegion(region);
cape.translateY(+1);
}
break;
case 1:
{
Sprite cape = modules.get(Module.CAPE);
//cape.setRegion(region);
cape.translateY(-1);
}
break;
Run Code Online (Sandbox Code Playgroud)
或者您可以cape在之前声明,switch因此它在范围内,您使用引用.
Sprite cape;
switch (frame) { // frame is an integer
case 0:
cape = modules.get(Module.CAPE);
Run Code Online (Sandbox Code Playgroud)
并且类似于案例1.
| 归档时间: |
|
| 查看次数: |
3588 次 |
| 最近记录: |