头晕 老师在看下这代码要怎么改啊

头晕 老师在看下这代码要怎么改啊

package Zoo;

import java.util.Scanner;

public class Test {

public static void main(String[] args) {
// TODO Auto-generated method stub
Animal animal=new Bear();
IACT actor=null;
boolean a=true;
while(a) {
animal.show();
boolean b=true;
while(b) {
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
switch(i) {
case 1:
actor=new Bear("bill",2);
case 2:
actor=new Lion("laian",2,"灰","公");
case 3:
actor=new Monkey("tom",1,"金丝猴");
case 4:
actor=new Parrot("rose",1,"牡丹鹦鹉");
case 5:
actor=new Clown("kandle",5);
}
if(i>0||i<6) {
b=false;
if(actor!=null) {
actor.act();
}else{
System.out.println("信息不正确 请重新输入");
return;
}
}

}
boolean c=true;
while(c) {
System.out.println("是否继续观看0/1");
Scanner sc1=new Scanner(System.in);
int k=sc1.nextInt();
if(k!=0|k!=1) {
System.out.println("信息有误请重新输入");
break;
}
if(k==0) {
System.out.println("退出程序");
return;
}
if(k==1) {
c=false;
break;
}

}


}
}
}

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

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

2回答
好帮手慕珊 2018-11-26 10:22:35

你好!代码中的问题如下:

1、包名应该所有字母均小写。

2、下面的逻辑不正确,应该是i>0&&i<6,满足这个if语句的条件,就去执行actor.act()方法,否则输出信息输入不正确 ,请重新输入。把if(actor!=null)可以去掉,如果i>0&&i<6这个条件满足,actor不可能为null。再把return语句去掉,输入信息不正确可以重新输入,而不是直接return介绍方法的执行了。

http://img1.sycdn.imooc.com//climg/5bfb551c0001b6f504890301.jpg

return和return后面的}都去掉,并且所有的case 语句后面都要加break

http://img1.sycdn.imooc.com//climg/5bfb56280001729304780186.jpg

3、上述改完后,是否继续观看执行时,无论输入什么数字都提示输入有误

因为此处的判断条件,当输入1时,k!=0为true就会执行if语句中的内容,改成k>1||k<0

然后将break改为continue,也就是当输入错了以后要重新输入。

http://img1.sycdn.imooc.com//climg/5bfb57af00016a8203830139.jpg

如果还有问题 ,可以继续提问,祝学习愉快!

一叶知秋519 2018-11-25 11:29:01
public class Test {

	public static void main(String[] args) {
		boolean flag = true;

		while (flag) {
			// 展示表演菜单
			playList();
			// 接收用户选择输入
			Scanner input = new Scanner(System.in);
			boolean actorFlay = true;
			int index = 0;

			// 根据用户输入产生表演者
			while (actorFlay) {
				index = input.nextInt();
				IAct actor = createActor(index);
				if (actor != null) {
					//结束关于表演者产生的循环,并调用对应的表演方法
					actorFlay = false;
					actor.act();
					System.out.println();
				}else{
					System.out.println("** 输入信息不正确,请重新输入 **");
					playList();
				}
			}

			// 提醒是否继续观看表演
			boolean nextFlag = true;
			while (nextFlag) {
				System.out.println("******  是否继续观看(1/0) ******");
				index = input.nextInt();
				switch (index) {
				case 1:
					nextFlag = false;
					break;
				case 0:
					System.out.println("*******       欢迎下次光临      *******");
					return;
				default:
					System.out.println("** 输入信息不正确,请重新输入 **");
					break;
				}
			}
		}
	}

	/**
	 * 表演菜单方法
	 */
	private static void playList() {
		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、小丑     ***********");
	}

	/**
	 * 生成表演者
	 * 
	 * @param index
	 *            根据菜单选择表演者序号
	 * @return 产生的表演者对象
	 */
	private static IAct createActor(int index) {
		IAct actor = null;
		switch (index) {
		case 1:
			actor = new Bear("Bill",1);
			break;
		case 2:
			actor = new Lion("Lain",2,"公狮","灰色");
			break;
		case 3:
			actor = new Monkey("Tom",1,"金丝猴");
			break;
		case 4:
			actor = new Parrot("Rose",1,"牡丹鹦鹉");
			break;
		case 5:
			actor = new Clown("Kahle",5);
			break;
		}
		return actor;
	}

}

同学可以参考这段代码,如果有问题,可以继续提问,祝学习愉快!

  • 提问者 SomnusL #1
    我跟他写的不一样的。。我想知道我的有啥问题。。
    2018-11-25 22:01:18
  • 提问者 SomnusL #2
    老师我还是不是很明白这个truefalse怎么用啊?为啥如果actor不等于null,actorfly等于false?为啥case输入1,nextflag等于false?其次Iact actor=createActor(index)是什么操作 我们好像没讲过啊
    2018-11-27 05:40:12
  • 好帮手慕阿满 回复 提问者 SomnusL #3
    同学你好,上边纸杯蛋糕老师已经根据你的程序给出了具体的意见。另外true和false要分具体的情况,例如:在while(flag)循环中,如果flag为true则会一直循环,如果为false则会推出循环。另外actor!=null后actorfly=false;和Iact actor=createActor(index)是根据实际的情况来写的,同学不用过度纠结,明白自己的程序如何运行即可。祝:学习愉快!
    2018-11-27 11:46:58
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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