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也是出现同样的错误。