关于switch case语法的一个问题。

ayuan231 2011-03-04 12:02:25

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


坐等高手来解释下。
...全文
373 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
runer 2011-03-04
  • 打赏
  • 举报
回复
case内部定义的变量,只在case内部存在,是局部变量

你第二个例子中k是在case 0中定义的,所以case 1里会报k没定义

同理,第三个就是正确的了,每一个case里都定义了


第一个例子,需要看你完整的代码

kk到底定义没?
jixiang_yexin 2011-03-04
  • 打赏
  • 举报
回复
各位说的都很清楚了
jixiang_yexin 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 ayuan231 的回复:]
Java code

int a = 1;
switch (a) {
case 0:
int k = 0;
System.out.println("case 0: " + k);
break;
case 1:
……
[/Quote]

这是变量作用域的问题

sevendawn 2011-03-04
  • 打赏
  • 举报
回复
第一个,System.out.println("case 1: " + k) 中k未定义;以为case0没有执行,所以k未定义。
第二个,System.out.println("case 1: " + kk)也是这个问题
第三个,也是case1里定义的是kk,不是k,所以和第一个问题一样

根据代码片段,只有第二个符合你说的问题
不知道你是怎么回事,还是要看你完整的源码?
24K純帥 2011-03-04
  • 打赏
  • 举报
回复
第一个在你代码里KK是第一次出现,怎么会有重复定义
Ganymede 2011-03-04
  • 打赏
  • 举报
回复
楼主实话说,三段代码应该都有问题包括第三个,第一个报错System.out.println("case 1: " + k);k没有初值
第二个报错System.out.println("case 1: " + kk);kk没有初值,以上两种情况比较像,因为case语句都在swatch语句块中,但是case 1:后面没有赋值给打印输出的变量
第三个应该也有错 你把case 1:后面写了个语句块,而且定义的是int kk = 9; 打印的是k 编译器应该不识别k 不知道怎么回事你那没报错
zqfddqr 2011-03-04
  • 打赏
  • 举报
回复
你的kk变量在别的地方还有定义
ETCentury 2011-03-04
  • 打赏
  • 举报
回复
只能用一个次来形容你的代码:横七竖八!

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧