目前就剩下一个问题没解决了,请老师帮忙看看。谢谢
public abstract class Animal { /** * 定义属性 name 和age. */ private String name; private int age; /** * 对私有属性进行封装 * @return */ 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; } /** * 建立抽象方法love(); */ public abstract String love(); }
public abstract interface IAct { public abstract String skill(); public abstract String act(); }
public class Bear extends Animal implements IAct { /** * 构造无参和有参方法.用来写入属性值 */ public Bear() { } public Bear(String name,int age) { this.setName(name); this.setAge(age); } /** * 重写父类方法love() */ @Override public String love() { return "喜欢卖萌" ; } /** * 重写接口方法 skill() * */ @Override public String skill() { return "挽着花篮,打着雨伞,自立走秀"; } /** * 重写并且实现接口方法act() */ @Override public String act() { String str = "表演者:"+this.getName()+"\n年龄:"+this.getAge()+"岁\n技能:"+ this.skill()+"\n爱好:"+this.love(); return str; } }
public class Lion extends Animal implements IAct { /** * 定义私有参数color,sex */ private String color,sex; /** * 构造无参和有参方法.用来写入属性值 */ public Lion() { } public Lion(String name,int age ,String color,String sex) { this.setName(name); this.setAge(age); this.setColor(color); this.setSex(sex); } /** * 对私有属性进行封装 * @return */ 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; } /** * 重写父类方法love() */ @Override public String love() { return "喜欢吃各种肉类"; } /** * 重写接口方法 skill() * */ @Override public String skill() { return "擅长钻火圈"; } /** * 重写并且实现接口方法act() */ @Override public String act() { String str = "表演者:"+this.getName()+"\n年龄:"+this.getAge()+"岁\n性别:"+this.getSex()+"狮\n毛色:"+this.getColor()+"\n技能:"+ this.skill()+"\n爱好:"+this.love(); return str; } }
public class Monkey extends Animal implements IAct { /** * 定义私有参数type */ private String type; /** * 构造无参和有参方法.用来写入属性值 */ public Monkey() { } public Monkey(String name,int age,String type) { this.setName(name); this.setAge(age); this.setType(type); } /** * 对私有属性进行封装 * @return */ public String getType() { return type; } public void setType(String type) { this.type = type; } /** * 重写父类方法love() */ @Override public String love() { return "喜欢模仿人的动作表情"; } /** * 重写接口方法 skill() * */ @Override public String skill() { return "骑独轮车过独木桥"; } /** * 重写并且实现接口方法act() */ @Override public String act() { String str = "表演者:"+this.getName()+"\n年龄:"+this.getAge()+"岁\n品种:"+this.getType()+"\n技能:"+ this.skill()+"\n爱好:"+this.love(); return str; } }
public class Parrot extends Animal implements IAct { /** * 定义私有参数type */ private String type; /** * 构造无参和有参方法.用来写入属性值 */ public Parrot() { } public Parrot(String name,int age,String type) { this.setName(name); this.setAge(age); this.setType(type); } /** * 对私有属性进行封装 * @return */ public String getType() { return type; } public void setType(String type) { this.type = type; } /** * 重写父类方法love() */ @Override public String love() { return "喜欢吃坚果和松子"; } /** * 重写接口方法 skill() * */ @Override public String skill() { return "擅长模仿"; } @Override public String act() { String str = "表演者:"+this.getName()+"\n年龄:"+this.getAge()+"岁\n品种:"+this.getType()+"\n技能:"+ this.skill()+"\n爱好:"+this.love(); return str; } }
public class Clown implements IAct { /** * 定义私有参数type */ private String name; private int years; /** * 构造无参和有参方法.用来写入属性值 */ public Clown(){ } public Clown(String name,int years){ this.setName(name); this.setYears(years); } /** * 对私有属性进行封装 * @return */ 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 String dress() { return "身穿五彩服装,头上戴着彩色的帽子,脸上画着夸张的彩妆"; } /** * 重写接口方法 skill() * */ @Override public String skill() { return "脚踩高跷,进行杂技魔术表演"; } @Override public String act() { String str = "表演者:"+this.getName()+"\n艺龄:"+this.getYears()+"年\n着装:"+ this.dress()+"\n技能:"+this.skill(); return str; } }
public class Menu { public void select() { System.out.println("******** 是否继续观看(1/0) ********"); } 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、小丑 **********"); } }
import java.util.InputMismatchException; import java.util.Scanner; public class Test { public static void main(String[] args) { int input ; Menu mu = new Menu(); mu.info(); Scanner sc = new Scanner(System.in); IAct actor=null; while(true) { try { input = sc.nextInt(); }catch(InputMismatchException e){ System.out.println( "输入的不是数字,请重新输入"); sc.next(); continue; } switch(input) { case 1: actor= new Bear("Bill", 1); System.out.println( actor.act()); break; case 2: System.out.println( "================"); actor = new Lion("Lain",2,"灰色","公"); System.out.println( actor.act()); break; case 3: System.out.println( "================"); actor = new Monkey("Tom",1,"金丝猴"); System.out.println( actor.act()); break; case 4: System.out.println( "================"); actor = new Parrot("Rose",1,"牡丹鹦鹉"); System.out.println( actor.act()); break; case 5: System.out.println( "================"); actor = new Clown("Kahle",5); System.out.println( actor.act()); break; default: System.out.println( "输入的数字不对,请重新输入"); continue; } mu.select(); try { input = sc.nextInt(); if (input!=1 && input!=0 ) { System.out.println( "输入的数字不对,请重新输入"); break; }else if(input==1) { mu.info(); continue; }else { System.out.println( "********谢谢观赏,欢迎下次再来!**********"); return; } }catch(InputMismatchException e){ System.out.println( "输入的不是数字,请重新输入"); sc.next(); continue; } /*switch(input) { case 0: System.out.println( "********谢谢观赏,欢迎下次再来!**********"); return; case 1: mu.info(); continue; }*/ }
问题就是:
当我在是否继续选择观看时,输入的不是1或者0 ,就会退出,请问那段程序要怎么改?
另外程序还有什么其他问题吗?
3
收起
正在回答
3回答
import java.util.InputMismatchException; import java.util.Scanner; public class Test { public static void main(String[] args) { int input ; Menu mu = new Menu(); mu.info(); Scanner sc = new Scanner(System.in); IAct actor=null; while(true) { try { input = sc.nextInt(); }catch(InputMismatchException e){ System.out.println( "输入的不是数字,请重新输入"); sc.next(); continue; } switch(input) { case 1: actor= new Bear("Bill", 1); System.out.println( actor.act()); break; case 2: System.out.println( "================"); actor = new Lion("Lain",2,"灰色","公"); System.out.println( actor.act()); break; case 3: System.out.println( "================"); actor = new Monkey("Tom",1,"金丝猴"); System.out.println( actor.act()); break; case 4: System.out.println( "================"); actor = new Parrot("Rose",1,"牡丹鹦鹉"); System.out.println( actor.act()); break; case 5: System.out.println( "================"); actor = new Clown("Kahle",5); System.out.println( actor.act()); break; default: System.out.println( "输入的数字不对,请重新输入"); continue; } while(true) { mu.select(); try { input = sc.nextInt(); if (input!=1 && input!=0 ) { System.out.println( "输入的数字不对,请重新输入"); continue; }else if(input==1) { mu.info(); break; }else { System.out.println( "********谢谢观赏,欢迎下次再来!**********"); return; } }catch(InputMismatchException e){ System.out.println( "输入的不是数字,请重新输入"); sc.next(); continue; } } } } }
我替你改的主方法,你看行不行?
如果解决了你的问题,望采纳,你的采纳是对我最大的鼓励
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星