目前就剩下一个问题没解决了,请老师帮忙看看。谢谢
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 星