关于项目的问题请教

关于项目的问题请教

package com.imooc.Animals;


import java.util.Scanner;


public class AnimalTest {



public void display() {

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 void pick() {

System.out.println("******** 是否继续观看(1继续/0退出程序) ********");

}



public static void main(String[] args) {

AnimalTest an=new AnimalTest();

Scanner sc=new Scanner(System.in);

int num;

int num1;

an.display();

System.out.println(" 请输入对应的数字进行操作:");

while(true) {

try {

num=sc.nextInt();

}catch(java.util.InputMismatchException e){

System.out.println("输入格式有误,请重新输入");

sc.next();

continue;

}


switch(num) {

case 1:

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

bear.act();

an.pick();

break;

case 2:

IAct act2=new Lion("lain",2,"灰色",'公');

act2.act();

an.pick();

break;

case 3:

IAct act3=new Monkey("Tom",2,"金丝猴");

act3.act();

an.pick();

break;

case 4:

IAct act4=new Parrot("Rose",1,"牡丹鹦鹉");

act4.act();

an.pick();

break;

case 5:

IAct act5=new Clown("kahle",5);

act5.act();

an.pick();

break;

}


try {

num1=sc.nextInt();


}catch(java.util.InputMismatchException e) {

System.out.println("输入格式有误,请重新输入");

sc.next();

continue;

}


if(num1==1) {

an.display();

System.out.println(" 请输入对应的数字进行操作:");

}if(num1==0){

break;

}

}


}

}

老师麻烦检查一下这个测试类:

问题一:运行没问题,是否继续观看(1/0),出入(1/0)以外的数字,如何捕捉异常?

问题二:是否继续观看(1/0),出入字母,可以正常捕捉异常,但是重新输入“1”,不是输出显示继续的内容,而是输出序号1熊的信息。

请问以上问题如何解决?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
吃吃吃鱼的猫 2019-07-21 17:11:05

同学你好,关于continue,我在下面链接中回答了同学的问题哦~

http://class.imooc.com/course/qadetail/136045

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

吃吃吃鱼的猫 2019-07-21 15:15:01

同学你好,

1、break用在switch-case中表示跳出switch-case判断。

2、可以使用同一个引用,因为每次选择菜单时,这个引用只会指向一个对象哦~

例如,选择菜单时,我们只能选择鹦鹉或者狮子呢~

3、continue的用法与switch-case无关,它表示退出本次循环,继续重新执行下一次的循环。

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

  • 提问者 无限精彩 #1
    老师,3、continue的用法与switch-case无关,它表示退出本次循环,继续重新执行下一次的循环。continue所在的循环体结构是哪一个
    2019-07-21 15:34:16
吃吃吃鱼的猫 2019-07-21 10:58:04

同学你好,同学可以参考以下链接中的代码帮助理解哦~

https://class.imooc.com/course/qadetail/121234

同时,也可以上传作业,老师会根据同学作业中出现的问题,回复同学一个完整的批复文档呢~

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

  • 提问者 无限精彩 #1
    问题一:老师,这个switch代码块里的break,是跳出switch代码块,还是跳出while代码块? 问题二:switch代码块里的接口引用怎么全是同一个引用actor,可以这样吗?不需要区分actor1,actor2,actor3,actor4,actor5吗? 问题三:switch代码块里的continue又回到哪个代码块执行?
    2019-07-21 14:09:28
好帮手慕小班 2019-07-20 11:55:39

        同学你好,这里可以参考如下思路来写这段代码,例如:

        boolean a= true;

        while(a){

                   展示表演菜单

                   boolean b= true;

                    while(b){

                               1、让用户输入选择

                                2、判断并通过switch结构给actor赋值,如果是1-5之间的数字,赋值b=false,判断iact是否为null,如果不为null,调用act方法。否则,输出提示信息,并再次展示表演菜单。

                    }

        boolean c= true

        while(c){

                1、提示用户是否继续

                2、让用户输入选择

                3、判断用户输入的数字,如果是0则return。如果是1 则c=flase。其他的内容则提示用户输入有误,只能是0或者1,使用continue跳出本次循环,重新接收数据!

        }

    }

因为在贴出代码中只对是否观看的内容进行了0和1的判断,所以单输入不是0和1的正整数时,程序就不会处理直接跳入到下一次的循环中,所以要在接收是否继续观看的内容中添加一些判断,当不是0和1时,要让用户重新输入!

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

  • 提问者 无限精彩 #1
    老师能否给出具体代码看看
    2019-07-20 22:22:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师