关于作业的问题
package com.imooc.test; import java.util.Scanner; import com.imooc.model.*; public class Test { public static void notice(){ System.out.println("******** 欢迎来到太阳马戏团 ********"); System.out.println("********** 请选择表演者 **********"); System.out.println("********** 1.棕熊 **********"); System.out.println("********** 2.狮子 **********"); System.out.println("********** 3.猴子 **********"); System.out.println("********** 4.鹦鹉 **********"); System.out.println("********** 5.小丑 **********"); } public static void continueOrNot(){ boolean b=true; while(b){ System.out.println("****** 是否继续观看(1/0) ******"); Scanner s1=new Scanner(System.in); int d1=s1.nextInt(); switch(d1){ case 0: System.out.println("******* 欢迎下次光临 ******"); System.exit(0); case 1: b=false; break; } if(d1!=1&&d1!=0){ System.out.println("信息输入有误,请重新输入!"); } } } public static void main(String[] args){ IAct actor=null; while(true){ notice(); Scanner input=new Scanner(System.in); int sc=input.nextInt(); if(sc<1||sc>5) System.out.println("输入有误,请重新输入!"); switch(sc){ case 1: actor=new Bear("Bill",1); break; case 2: actor=new Lion("Lain",2,"公狮","灰色"); break; case 3: actor=new Monkey("Tom",1,"金丝猴"); break; case 4: actor=new Parrot("Rose",1,"牡丹鹦鹉"); break; case 5: actor=new Clown("Kahle",5); break; } actor.act(); continueOrNot(); } } }
讲师点评:作业整体完成得很好,但没有体现多态。为了体现多态,不能去直接创建实现类的对象,应该先声明一个接口的引用,如:IAct actor=null;然后在case 语句后面进行对象的创建,如case 1后的代码为:actor= new Bear("Bill", 1); 最后act方法的调用写在switch结构的外面,即actor.act(); 从上述的流程上看,通过接口的引用指向了子类的对象,最后去调用act()方法,因为actor引用指向的对象不同,调用act()方法就会输出不同的结果。这就是多态的体现。在你的代码中,可以将default语句去掉,在switch结构上面写一条if语句,如果输入的数据小于1或者大于5就要给出输入错误的提示。把act()和continueOrNot()方法的调用写到了switch结构的外面。另外,IACT写成IAct更符合代码规范。如果对作业有疑问,可以在问答区提问,我们的助教会帮助解决问题。祝学习愉快!
————————————————
问题一:如何修改才能使得第一次输入错误也给出错误提示?如果我直接输入100,会有空指针报错
问题二:如上图,第一次输入正确,重新观看,再输入错误,就反复执行上面的结果,为什么。。。?怎样修改?
问题三:上面的是用接口的引用指向了子类的对象,能不能用父类的引用指向子类对象?是因为IAct是五个演员都引用的吗?如果用父类指向四只动物,接口指向小丑可以吗?
正在回答 回答被采纳积分+1
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星