为什么输出全是小羊的叫声

来源:3-16 编程练习

慕仔0431810

2019-10-20 15:07:08

public class Test {

    public static void main(String[] args) {
        //生成父类对象数组,数组长度为5
        Animal[] ani=new Animal[5];
  //产生随机数,随机产生三种具体子类的实例
  int n;
         for(int i=0;i<ani.length;i++){
             n=(int)(Math.random()*3);
             switch(n){
                 case 0:ani[i]=new Cat();
                 case 1:ani[i]=new Dog();
                 case 2:ani[i]=new Sheep();
             }
         }
        
       
       //循环输出,循环体中每个对象分别调用cry()方法。
        for(int i=0;i<ani.length;i++){
            ani[i].cry();

 }

}
}


public class Animal {
    //属性:kind(种类)
 private String kind;
 
 public Animal(){
  
 }
   
 //创建带参(king为参数)构造函数
   public Animal(String kind){
       this.setKind(kind);
   }

    //应用封装实现对私有属性的get/set操作
 public String getKind(){
     return kind;
 }
 
 public void setKind(String kind) {
  this.kind = kind;
 }
 
 //创建成员方法cry():void
 
     public void cry(){
        
     }

}

public class Cat extends Animal {
    //重写父类cry()方法,输出信息为“小猫的叫声:喵喵喵~~~”
    
      public void cry(){
         System.out.println("小猫的叫声:喵喵喵~~~");
     }

}


public class Dog extends Animal {
    //重写父类cry()方法:输出信息为“小狗的叫声:汪汪汪~~~”
 
       public void cry(){
         System.out.println("小狗的叫声:汪汪汪~~~");
     }

}

public class Sheep extends Animal {
     //重写父类的方法cry(),要求输出信息“小羊的叫声:咩咩咩~~~”
   
    public void cry(){
         System.out.println("小羊的叫声:咩咩咩~~~");
     }

}


写回答

1回答

好帮手慕小尤

2019-10-20

同学你好,因在switch结构中并没有结束语句,导致每一次的循环都运行case 2选项,所以每次输出都是小羊的叫声,建议同学在case 语句的后面添加结束语句(break)。修改后代码如下:

http://img.mukewang.com/climg/5dac14700913511603880226.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

0 学习 · 11489 问题

查看课程