老师能按照这个点评改一下测试类吗?

老师能按照这个点评改一下测试类吗?

点评:

【测试类】

1、为了体现多态,应该先声明一个接口的引用,如:IAct actor=null;然后在case 语句后面进行对象的创建,如case 1后的代码为:actor= new Bear("Bill", 1);

最后act方法的调用写在switch结构的外面,即actor.act();

从上述的流程上看,通过接口的引用指向了子类的对象,最后去调用act()方法,因为actor引用指向的对象不同,调用act()方法就会输出不同的结果。这就是多态的体现。

2、提示是否观看表演,当输入0或1以外的数字时,应该一直输入,直到正确为止,思路如下:

定义一个boolean值,初始值为true

使用while循环,当boolean值为true时,执行如下操作:

1)输出提示信息是否继续观看,并调用System.exit(0)退出程序

2)switch结构,当输入数据为1时,boolean值设置为false

    当输入为0时,提示欢迎下次光临

    当输入0/1以外的值时,提示输入不正确,重新输入

3、当提示选择表演者时,输入非1-5之间的数,应该提示请输入1-5的数字。建议在case5后添加default用来提示。


测试类代码:

package com.imooc.test;


import java.util.Scanner;


import com.imooc.animals.*;


public class Test {

public 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 main(String[] args) {

IAct one=new Bear("Bill",1);

IAct two=new Lion("Lain",2,"公","灰色");

IAct three=new Monkey("Tom",1,"金丝猴");

IAct four=new Parrot("Rose",1,"牡丹鹦鹉");

IAct five=new Clown("Kahle",5);

Test test=new Test();

Scanner sc=new Scanner(System.in);

while(true) {

test.notice();

int n=sc.nextInt();

switch(n) {

case 1:

one.act();

System.out.println();

System.out.println("********是否继续观看(1/0)********");

int n1=sc.nextInt();

if(n1==1) {

continue;

}else if(n1==0){

System.out.println("********欢迎下次光临!********");

System.exit(0);

}

break;

case 2:

two.act();

System.out.println();

System.out.println("********是否继续观看(1/0)********");

int n2=sc.nextInt();

if(n2==1) {

continue;

}else if(n2==0){

System.out.println("********欢迎下次光临!********");

System.exit(0);

}

break;

case 3:

three.act();

System.out.println();

System.out.println("********是否继续观看(1/0)********");

int n3=sc.nextInt();

if(n3==1) {

continue;

}else if(n3==0){

System.out.println("********欢迎下次光临!********");

System.exit(0);

}

break;

case 4:

four.act();

System.out.println();

System.out.println("********是否继续观看(1/0)********");

int n4=sc.nextInt();

if(n4==1) {

continue;

}else if(n4==0){

System.out.println("********欢迎下次光临!********");

System.exit(0);

}

break;

case 5:

five.act();

System.out.println();

System.out.println("********是否继续观看(1/0)********");

int n5=sc.nextInt();

if(n5==1) {

continue;

}else if(n5==0){

System.out.println("********欢迎下次光临!********");

System.exit(0);

}

break;

}

}

}

}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,建议同学先按照老师的点评,先尝试自己修改下代码哦~,将修改后的代码,可以贴出来,老师帮同学检查,不懂地方也可以提出来哦~

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

  • 精慕门618366 提问者 #1
    package com.imooc.test; import java.util.Scanner; import com.imooc.animals.*; public class Test { public 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 main(String[] args) { IAct actor=null; Test test=new Test(); Scanner sc=new Scanner(System.in); while(true) { test.notice(); int n=sc.nextInt(); switch(n) { 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; default: System.out.println("请输入1-5之间的数字!"); break; } if((actor!=null) &&(n>0 &&n<=5) ) { actor.act(); System.out.println(); System.out.println("********是否继续观看(1/0)********"); boolean flag=true; while(flag==true) { int n1=sc.nextInt(); switch(n1) { case 1: flag=false; break; case 0: System.out.println("********欢迎下次光临!********"); System.exit(0); default: System.out.println("输入不正确,请重新输入!"); break; } } } } } }
    2019-08-16 16:41:04
  • 精慕门618366 提问者 #2
    老师,请问哪里有问题?
    2019-08-16 16:41:55
  • 好帮手慕酷酷 回复 提问者 精慕门618366 #3
    同学你好,修改后的代码完成的真的很棒!没有什么问题了~继续努力! 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-08-16 17:41:53
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师