读书人

编程思想中一不明白的例子,该怎么解决

发布时间: 2011-12-31 23:50:30 作者: rapoo

编程思想中一不明白的例子
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也是出现同样的错误。

[解决办法]
public Shape next()
这个方法需要返回一个Shape对象
如果你的switch没有default分支
那么在case判断完没有对应的rand.nextInt(3)值的时候没有对象返回,不符合这个方法的声明,所以会报错,提醒你这个方法可能没有返回Shape对象
[解决办法]
up
[解决办法]
next()方法必须要返回一个Shape对象

读书人网 >J2SE开发

热点推荐