为什么我这样写输出的都是猫的叫声 其他的都不输出呢
来源:3-16 编程练习
muke_xinke
2020-03-19 15:19:43
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(); break; case 1: ani[i] = new Dog(); break; case 2: ani[i] = new Sheep(); break; } } // 循环输出,循环体中每个对象分别调用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 void setKind(String kind) {
this.kind=kind;
}
public String getKind() {
return kind;
}
//创建成员方法cry():void
public void cry() {
}
}
public class cat extends Animal {
//重写父类cry()方法,输出信息为“小猫的叫声:喵喵喵~~~”
public cat() {
}
@Override
public void cry() {
System.out.println("小猫的叫声:喵喵喵~~~");
}
}
public class Dog extends Animal {
//重写父类cry()方法:输出信息为“小狗的叫声:汪汪汪~~~”
public Dog() {
}
@Override
public void cry() {
System.out.println("小狗的叫声:汪汪汪~~~");
}
}
public class Sheep extends Animal {
//重写父类的方法cry(),要求输出信息“小羊的叫声:咩咩咩~~~”
public Sheep() {
}
@Override
public void cry() {
System.out.println("小羊的叫声:咩咩咩~~~");
}
}
1回答
同学你好,下面将解答同学的问题。
1. 同学的代码之所以不输出其他动物叫声,是因为获取随机数时有误,(int)Math.random(),强转成int类型的随机数只为0,根据运算优先级别,同学的代码先执行int随机数强转再进行*3操作,所以n一直为0。更改后代码如下:
只需将 Math.random() * 3 外加括号即可,优先计算括号中内容。
2. 类名命名有误,类名首字母应大写,建议以英文名称命名。例如同学的cat类应写为Cat。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题