是否继续观看这个循环怎么写?

来源:7-2 作业题

慕桂英4001693

2019-04-07 14:37:46

package com.imooc.test;
import com.imooc.model.*;
import java.util.*;
public class Test {
 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  Test dm = new Test();
  int input;
  while (true) {
   dm.showMenu();
   try {
    input = sc.nextInt();
   } catch (java.util.InputMismatchException e) {
    System.out.println("输入信息有误,请重新输入");
    sc.next();
    continue;
   }
   // switch选择观看的表演
   switch (input) {
   case 1:
    Bear a = new Bear();
    a.setName("Bill");
    a.setAge("1岁");
    System.out.println("表演者:" + a.getName() + "\n" + "年龄:" + a.getAge() + "\n" + "技能:" + a.act() + "\n"
      + "爱好:" + a.love());
    break;
   case 2:
    Lion b = new Lion();
    b.setName("Lain");
    b.setAge("2岁");
    b.setSex("雄狮");
    b.setColor("灰色");
    System.out.println("表演者:" + b.getName() + "\n" + "年龄:" + b.getAge() + "\n" + "性别:" + b.getSex() + "\n"
      + "毛色:" + b.getColor() + "\n" + "技能:" + b.act() + "\n" + "爱好:" + b.love());
    break;
   case 3:
    Monkey c = new Monkey();
    c.setName("Tom");
    c.setAge("1岁");
    c.setType("金丝猴");
    System.out.println("表演者:" + c.getName() + "\n" + "年龄:" + c.getAge() + "\n" + "品种:" + c.getType() + "\n"
      + "技能:" + c.act() + "\n" + "爱好:" + c.love());
    break;
   case 4:
    Parrot d = new Parrot();
    d.setName("Rose");
    d.setAge("1岁");
    d.setType("牡丹鹦鹉");
    System.out.println("表演者:" + d.getName() + "\n" + "年龄:" + d.getAge() + "\n" + "品种:" + d.getType() + "\n"
      + "技能:" + d.act() + "\n" + "爱好:" + d.love());
    break;
   case 5:
    Clown e = new Clown("Kahle", "5年");
    System.out.println("表演者:" + e.getName() + "\n" + "年龄:" + e.getYears() + "\n" + "着装:" + e.dress() + "\n"
      + "技能:" + e.act());
    break;
   default:
    System.out.println("输入信息有误,请重新输入");
    continue;
   }
   // 判斷是否繼續觀看表演
   System.out.println("******是否继续观看(1/0)******");
   int i;
   try {
    i = sc.nextInt();
   } catch (java.util.InputMismatchException e) {
    System.out.println("输入信息有误,请重新输入");
    sc.next();
    continue;
   }
   if (i == 1) {
    continue;
   } else if (i == 0) {
    System.out.println("*******  欢迎下次光临   ********");
    break;
   } else {
    System.out.println("输入信息有误,请重新输入");
    continue;
   }
  }
 }
 // 设置节目表显示方法;
 public void showMenu() {
  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("******是否继续观看(1/0)******");
   int i;
   try {
    i = sc.nextInt();
   } catch (java.util.InputMismatchException e) {
    System.out.println("输入信息有误,请重新输入");
    sc.next();
    continue;
   }
   if (i == 1) {
    continue;
   } else if (i == 0) {
    System.out.println("*******  欢迎下次光临   ********");
    break;
   } else {
    System.out.println("输入信息有误,请重新输入");
    continue;
   }

运行之后如果输入不是1或0结果会直接进行下一次while循环

怎么跳回是否继续观看(1/0)这里?

写回答

2回答

好帮手慕阿满

2019-04-08

同学你好,是否继续观看可以使用一个while循环,循环条件是(i!=1 & i!=0),在循环中重新输入,参考如下代码:

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

另外还有几个建议:

1、建议同学在实现类中定义带参构造方法,在测试类中使用带参构造方法定义对象。

2、在实现类类中的act()方法中输出表演着的信息,在测试类中直接调用act()方法输出信息即可。

3、测试类中,为体现多态,不建议直接定义实现类的对象,而是应该先声明一个接口的引用,如:IAct actor=null;然后在case 语句后面进行对象的创建,如case 1后的代码为:actor= new Bear("Bill", 1);最后act方法的调用写在switch结构的外面,即if(actor!=null){actor.act(); }

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

0

天天4244770

2019-04-08

加一个while循环,把判断语句写入try里面

如我单独写一个方法去判断。主方法里面调用。

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

0

0 学习 · 11489 问题

查看课程