import java.util.*;class Shape{
void draw(){}
void erase(){}
}class Circle extends Shape{
void draw(){
System.out.println("Circle.draw()");
}
void erase(){
System.out.println("Circle.erase()");
}
}class Square extends Shape{
void draw(){
System.out.println("Square.draw()");
}
void erase(){
System.out.println("Square.erase()");
}
}class Triangle extends Shape{
void draw(){
System.out.println("Triangle.draw()");
}
void erase(){
System.out.println("Triangle.erase()");
}
}class RandomShapeGenerator{
private Random rand=new Random();
public Shape next(){
switch(rand.nextInt(3)){
default: //在去掉default:后将编译错误
case 0:return new Circle();
case 1:return new Square();
case 2:return new Triangle();
}
}
}public class Shapes{
private static RandomShapeGenerator gen=new RandomShapeGenerator();
public static void main(String[] args){
Shape[] s=new Shape[9];
for(int i=0;i<s.length;i++){
s[i]=gen.next();
}
for(int i=0;i<s.length;i++){
s[i].draw();
}
}
}各位能否告诉我为什么在switch那必须有default么?而且我把它放在case之后加上break也是出现同样的错误。
void draw(){}
void erase(){}
}class Circle extends Shape{
void draw(){
System.out.println("Circle.draw()");
}
void erase(){
System.out.println("Circle.erase()");
}
}class Square extends Shape{
void draw(){
System.out.println("Square.draw()");
}
void erase(){
System.out.println("Square.erase()");
}
}class Triangle extends Shape{
void draw(){
System.out.println("Triangle.draw()");
}
void erase(){
System.out.println("Triangle.erase()");
}
}class RandomShapeGenerator{
private Random rand=new Random();
public Shape next(){
switch(rand.nextInt(3)){
default: //在去掉default:后将编译错误
case 0:return new Circle();
case 1:return new Square();
case 2:return new Triangle();
}
}
}public class Shapes{
private static RandomShapeGenerator gen=new RandomShapeGenerator();
public static void main(String[] args){
Shape[] s=new Shape[9];
for(int i=0;i<s.length;i++){
s[i]=gen.next();
}
for(int i=0;i<s.length;i++){
s[i].draw();
}
}
}各位能否告诉我为什么在switch那必须有default么?而且我把它放在case之后加上break也是出现同样的错误。
解决方案 »
- 有关静态代码块的执行顺序???
- 求计算机专业英语电子版图书,渴望中...
- 一道面试题
- 请问一下,我将数据存到VECTOR里,为何取出来重复的是最后一条数据。
- 高分请教!!!
- 找一个确实能用的转大写金额的程序
- hashmap好像不支持对重复key的输入,但理论上hash表对重复key是支持的,如何解决hashmp对重复key不支持的问题了?
- 线程让出 cup 后做的事情?
- 请问使用java如何虚拟键盘操作,如虚拟按下按钮delete键或print键
- 用jbuilder6 开发 database application时遇到点问题,请指教(在线等)
- 就没人能解决这个程序?为什么在浏览器显示不出来?
- JTable里怎么初始化表格,修改单元格的值,并且获得该值进行相关操作?
这个方法需要返回一个Shape对象
如果你的switch没有default分支
那么在case判断完没有对应的rand.nextInt(3)值的时候没有对象返回,不符合这个方法的声明,所以会报错,提醒你这个方法可能没有返回Shape对象