如果写成这样也不报错:
switch ((int) (Math.random() * 3)) {
case 0:
return new Circle();
case 1:
return new Square();
default: return null;
}这是为什么啊?对default用法和位置感到迷惑
switch ((int) (Math.random() * 3)) {
case 0:
return new Circle();
case 1:
return new Square();
default: return null;
}这是为什么啊?对default用法和位置感到迷惑
解决方案 »
- zip md5 asc 后缀都代表什么样的文件
- Struts 集成Hibernate修改数据时 argument type mismatch异常,请高手们解决
- Hibernate配置问题请教.
- 这个不知道是什么问题引起的,可能是Hirbernate配置问题: === Cannot open connection ===分不够再加~
- hibernate向大家请教一个小问题,朋友们多谢给看看!
- 请教上传文件的同时,表单里的参数不在可用的问题
- 首页记载问题(怎样先加载servlet)
- 求 用代码实现 关于分成
- 大家新年快乐
- 类似petstore的结构,某个.do连接在到.screen后IE的标题栏还是显示.do,怎么把它改过来,在petstore中是如何实现的?
- java的基础问题,谢谢!!
- Tomcat启动问题
1.default的用法是:当在它之前的所有case的值都未匹配时执行它后边的语句;
2.你的函数要返回一个值;
3.先了解一般的写法如下:
switch(i)
{
case 0:
j++;
break;
case 1:
j += 2;
break;
default:
j += 3;
break;
}
请注意break的使用,在switch程序体内,break之后的语句将不被执行.分析原因:
1.你的第一个语句之所以没有语法错误是因为:
你在default:之后没有break;语句,程序在执行到default:之后继续往下执行,当执行到 case 0:
return new Circle();时,因为遇到了return语句,正确返回;
2.如果将第一个语句的前一个default注释掉,将 "//default: //default写在这里报错:the method must return a result of type shape" 的注释打开,这样就会抱错,因为你在default:之后没有return任何值,你想:如果程序执行到default却没有return语句,这当然是错误的.3.你的第二个语句 default: return null;当然是正确的,因为它有return语句.
Math.random() * 3 他的范围是 (0,3)
所以假如为3,先default,然后case,遇不到如果是3该怎么办?不还是没有返回值么?
return new Circle();
先匹配default,不相同,然后再case 0 ,还不同,然后再case 1
结果发现没有相同的?
这个时候编译器返回什么了?
所以如果值是 3,rreturn new Circle(); 或者 return new Square();根本就没有执行
哪来的返回值?