3 回答
TA贡献1802条经验 获得超6个赞
我将重复其他人所说的:每个case子句中变量的范围与整个switch语句相对应。但是,您可以使用大括号创建其他嵌套范围,如下所示:
int key = 2;
switch (key) {
case 1: {
String str = "1";
return str;
}
case 2: {
String str = "2";
return str;
}
}
现在,由于str每个case子句中命名的变量都在其自己的范围内,因此结果代码将成功编译。
TA贡献1865条经验 获得超7个赞
变量的范围是整个switch语句-所有情况和默认值(如果包括)。
这是其他一些选择...
选项1:
int key = 2;
switch (key) {
case 1:
return "1";
case 2:
return "2";
}
选项2:
int key = 2;
String str = null;
switch (key) {
case 1:
str = "1";
return str;
case 2:
str = "2";
return str;
}
TA贡献1852条经验 获得超1个赞
我认为这是一个有效的问题,案件陈述的范围假设是不可避免的。进行自我调整是因为java编写器已使此方法不正确。
例如,如果默认情况下语句处于范围的第一行,则比用break语句显式关闭大小写结尾的情况有什么问题。因此,在情况1中的声明在情况2中不可用,它具有并行作用域,但不嵌套。
添加回答
举报