int a = 1;
switch (a) {
case 0:
int k = 0;
System.out.println("case 0: " + k);
break;
case 1:
int kk = 9;//在这里会报kk重复定义的错误
System.out.println("case 1: " + k);
} int a = 1;
switch (a) {
case 0:
int kk = 0;
System.out.println("case 0: " + kk);
break;
case 1:
System.out.println("case 1: " + kk);//这里报kk没有赋初始值的错误
}
//这块没有出现错误
int a = 1;
switch (a) {
case 0: {
int k = 0;
System.out.println("case 0: " + k);
break;
}
case 1:
{
int kk = 9;
System.out.println("case 1: " + k);
}
}
坐等高手来解释下。
第一个例子,需要看你完整的代码kk到底定义没?
第二个报错System.out.println("case 1: " + kk);kk没有初值,以上两种情况比较像,因为case语句都在swatch语句块中,但是case 1:后面没有赋值给打印输出的变量
第三个应该也有错 你把case 1:后面写了个语句块,而且定义的是int kk = 9; 打印的是k 编译器应该不识别k 不知道怎么回事你那没报错
第二个,System.out.println("case 1: " + kk)也是这个问题
第三个,也是case1里定义的是kk,不是k,所以和第一个问题一样根据代码片段,只有第二个符合你说的问题
不知道你是怎么回事,还是要看你完整的源码?