7-2的作业,请老师审批

来源:7-2 作业题

qq_aiq款_hnrGLT

2019-07-11 09:24:43

package cc.grgroup.animal;
/*
 * 1.抽象父类:

     动物(Animal)

           属性:昵称(name)、年龄(age)

           抽象方法:描述喜好(love)
 */
public abstract class Animal {
	private String name;
	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	public abstract void love();
	
	public Animal(){}
	
	public Animal(String name,int age){
		this.setName(name);
		this.setAge(age);
	}
}

package cc.grgroup.animal;

public class Bear extends Animal implements IAct {
	public Bear(){}
	
	public Bear(String name,int age){
		super(name,age);
	}
	
	@Override
	public void skill() {
		System.out.println("技能:挽着花篮,打着雨伞,独自走秀!");

	}

	@Override
	public void love() {
		System.out.println("爱好:喜欢卖萌");

	}

}

package cc.grgroup.animal;

public class Clown implements IAct {
	private String name;
	private int years;
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public int getYears() {
		return years;
	}

	public void setYears(int years) {
		this.years = years;
	}

	public Clown(){}
	public Clown(String name,int years ){
		this.setName(name);
		this.setYears(years);
	}
	public void dress(){
		System.out.println("着装:身穿五彩衣服,头上戴着彩色帽子,脸上化妆夸张彩妆");
	}
	public void skill() {
		System.out.println("技能:脚踩高桥,进行杂技魔术表演");

	}

}
package cc.grgroup.animal;
/*
 * 表演(IAct)

            抽象方法:描述技能(skill)、描述表演(act)

            说明: 每个表演者的表演信息是通过调用act()方法输出的      
 */
public interface IAct {
	public void skill();
}

package cc.grgroup.animal;
/*
 *  狮子(Lion)

             继承自Animal实现IAct

             新增属性:颜色(color)、性别(sex)
 */
public class Lion extends Animal implements IAct {
	private String color;
	private String sex;
	
	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}
	
	public Lion(){}
	public Lion(String name,int age,String color,String sex ){
		super(name,age);
		this.setColor(color);
		this.setSex(sex);
	}
	@Override
	public void skill() {
		System.out.println("技能:擅长钻火圈");

	}

	@Override
	public void love() {
		System.out.println("爱好:喜欢吃各种肉类");

	}

}

package cc.grgroup.animal;

public class Monkey extends Animal implements IAct {
	private String type;
	
	
	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}
	
	public Monkey(){}
	public Monkey(String name,int age,String type){
		super(name,age);
		this.setType(type);
	}
	@Override
	public void skill() {
		System.out.println("技能:骑独轮车过独木桥!");

	}

	@Override
	public void love() {
		System.out.println("爱好:喜欢模仿人的表情!");

	}

}

package cc.grgroup.animal;

public class Parrot extends Animal implements IAct {
	private String type;
	
	
	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}
	
	public Parrot(){}
	public Parrot(String name,int age,String type){
		super(name,age);
		this.setType(type);
	}
	@Override
	public void skill() {
		System.out.println("技能:边唱歌边跳舞");

	}

	@Override
	public void love() {
		System.out.println("爱好:模仿人说话和唱歌!");

	}

}

package cc.grgroup.animal;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Test {
	public void displayMenu(){
		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、小丑");
		System.out.println("********************************************");
	}
	public void isnot(){
		System.out.println("**********是否继续观看马戏团0/1*****************");
	}
	public static void main(String[] args) {
		int xh = 0;
		int isnot1 = 0,isnot2 = 0,isnot3 = 0,isnot4 = 0,isnot5 = 0;
		while (true){
			Test t = new Test();
			t.displayMenu();
			Scanner sc = new Scanner(System.in);
			Scanner sc1 = new Scanner(System.in);
			try {
				xh = sc.nextInt();
			} catch (InputMismatchException e) {
				System.out.println("输入的数据格式有误,不能有非数字!请重新选择需要观看的节目");
				continue;
			}
			
			switch (xh) {
			case 1:
				Bear b = new  Bear("Bill",1);
				System.out.println("表演者:"+b.getName());
				System.out.println("年龄:"+b.getAge());
				b.skill();
				b.love();
				t.isnot();
				try {
					isnot1 = sc1.nextInt();
				} catch (Exception e) {
					// TODO: handle exception
				}
				
				if(isnot1 ==1){
					break;
				}else{
					return;
				}
			
			case 2:
				Lion c = new  Lion("lain",2,"灰色","公狮");
				System.out.println("表演者:"+c.getName());
				System.out.println("年龄:"+c.getAge());
				System.out.println("毛色:"+c.getColor());
				System.out.println("性别:"+c.getSex());
				c.skill();
				c.love();
				t.isnot();
				 isnot2 = sc1.nextInt();
				if(isnot2 ==1){
					break;
				}else{
					return;
				}	
			case 3:
				Monkey m = new Monkey("Tom",2,"金丝猴");
				System.out.println("表演者:"+m.getName());
				System.out.println("年龄:"+m.getAge());
				System.out.println("品种:"+m.getType());
				m.skill();
				m.love();
				t.isnot();
				 isnot3 = sc1.nextInt();
				if(isnot3 ==1){
					break;
				}else{
					return;
				}
			case 4:
				Parrot p = new Parrot("Lili",2,"八哥");
				System.out.println("表演者:"+p.getName());
				System.out.println("年龄:"+p.getAge());
				System.out.println("品种:"+p.getType());
				p.skill();
				p.love();
				t.isnot();
				 isnot4 = sc1.nextInt();
				if(isnot4 ==1){
					break;
				}else{
					return;
				}
			case 5:
				Clown c1 = new Clown("梁超款",2);
				System.out.println("表演者:"+c1.getName());
				System.out.println("艺龄:"+c1.getYears());
				c1.dress();
				c1.skill();
				t.isnot();
				 isnot5 = sc1.nextInt();
				if(isnot5 ==1){
					break;
				}else{
					return;
				}	
			default:
				System.out.println("您输入的表演序号有误,请输入1-5的表演序号");
				break;
			}
		}		
	}

}


写回答

1回答

吃吃吃鱼的猫

2019-07-11

同学你好,


1、对象的创建建议写在循环外,Scanner对象创建一次即可多次使用。

http://img.mukewang.com/climg/5d26cff600010ac708350329.jpg


2、为体现多态,在switch-case分支中再创建实现类的对象。


可以按照如下思路:初始化接口的引用,如:IACT iact=null;然后在case 语句后面将接口引用指向具体实现类的对象,如case 1后的代码为:

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

其次,skill,love,isnot方法的调用写在switch结构的外面,即:

if(one!=null){
    one.skill();
    one.love();
    one.isnot();
  }

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

0

0 学习 · 11489 问题

查看课程