7.2作业评讲问题
1 | <br> |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 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 份
- 解答问题 7235 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧