7.2作业评讲问题
package com.daniu.Test;
import java.util.Scanner;
import com.daniu.Kind.*;
public class Test {
public void info() {
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) {
// TODO Auto-generated method stub
IAct actor =null;
Bear b1=new Bear("Bill",1);
Monkey m1=new Monkey("Tom",1,"金丝猴");
Parrot p1=new Parrot("Rose",1,"牡丹鹦鹉");
Lion l1=new Lion("Lain",2,"灰色","公狮");
Clown c1=new Clown("Kahle",5);
Scanner sc=new Scanner(System.in);
Test t1=new Test();
boolean label =true;
while (1==1) {
t1.info();
if (label==true) {
int n=sc.nextInt();
if (n<=5) {
switch(n) {
case 1:
actor=new Bear("Bill",1);
b1.love();break;
case 2:
actor=new Lion("Lain",2,"灰色","公狮");
l1.love();break;
case 3:
actor=new Monkey("Tom",1,"金丝猴");
m1.love();break;
case 4:
actor=new Parrot("Rose",1,"牡丹鹦鹉");
p1.love();break;
case 5:
actor=new Clown("Kahle",5);
c1.dress();;break;
}
actor.act();actor.skill();
label=false;
}else {
System.out.println("选择表演者错误,请重新输入");
}
}else {
System.out.println("*****是否继续观看(0/1)*****");
int n1=sc.nextInt();
if (n1!=0&&n1!=1) {
System.out.println("**输入信息不正确,请重新输入**");
}else if (n1==1) {
label=true;
}else if (n1==0) {
System.out.println("*****欢迎下次光临*****");
return ;
}
}
}
}
}
应该先声明一个接口的引用,如:IAct actor=null;然后在case 语句后面进行对象的创建,如case 1后的代码为:actor= new Bear("Bill", 1);然后act方法的调用写在switch结构的外面,即actor.act();从上述的代码上看,通过接口的引用指向了子类的对象,最后去调用act()方法,因为actor引用指向的对象不同,调用act()方法就会输出不同的结果
1、如上代码根据老师点评后修改,不知道是不是这样修改,如果是这样修改,那输出的文本顺序不对了,先输出了爱好,表演者在后面了。。
2、接口申明后,类似子类这种是否还需要实例化对象?
正在回答 回答被采纳积分+1
public static void main(String[] args) { // TODO Auto-generated method stub IAct actor =null; Scanner sc=new Scanner(System.in); Test t1=new Test(); boolean label =true; while (true) { if (label) { t1.info(); int n=sc.nextInt(); // if (n<=5) { switch(n) { case 1: actor=new Bear("Bill",1);actor.act();label=false;break; case 2: actor=new Lion("Lain",2,"灰色","公狮");actor.act();label=false;break; case 3: actor=new Monkey("Tom",1,"金丝猴");actor.act();label=false;break; case 4: actor=new Parrot("Rose",1,"牡丹鹦鹉");actor.act();label=false;break; case 5: actor=new Clown("Kahle",5);actor.act();label=false;break; default : System.out.println("输入错误,请重新输入"); break; } // }else { // System.out.println("选择表演者错误,请重新输入"); }else { System.out.println("*****是否继续观看(0/1)*****"); int n1=sc.nextInt(); if (n1!=0&&n1!=1) { System.out.println("**输入信息不正确,请重新输入**"); }else if (n1==1) { label=true; }else if (n1==0) { System.out.println("*****欢迎下次光临*****"); return ; } } } } }
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星