请教各位大佬了,当输入1的时候怎么进入下次循环?

请教各位大佬了,当输入1的时候怎么进入下次循环?

我觉我功能界面的逻辑出现了问题,想了好半天想不到其他的方法

当输入1的时候怎么进入下次循环?

代码如下:

package com.imooc.circustest;


import java.util.Scanner;


import com.imooc.circus.Bear;

import com.imooc.circus.Clown;

import com.imooc.circus.Lion;

import com.imooc.circus.Menu;

import com.imooc.circus.Monkey;

import com.imooc.circus.Parrot;


public class CircusTest {


public static void main(String[] args) {

Menu menu = new Menu();

Scanner sc = new Scanner(System.in);

int input, keep;

while (true) {

menu.showMenu();

input = sc.nextInt();

switch (input) {

case 1:

// 棕熊Bear

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

bear.act();

System.out.println();

break;

case 2:

// 狮子Lion

Lion lion = new Lion("Lain", 2, "灰色", '公');

lion.act();

System.out.println();

break;

case 3:

// 猴子Monkey

Monkey monkey = new Monkey("Tom", 1, "金丝猴");

monkey.act();

System.out.println();

break;

case 4:

// 鹦鹉

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

parrot.act();

System.out.println();

break;

case 5:

// 小丑Clown

Clown clown = new Clown("Kahle", 5);

clown.act();

System.out.println();

break;

}

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

keep=sc.nextInt();

if(keep==1) {

//卡在这里了 当输入1的时候怎么进入下次循环?

}else if(keep==0){

System.out.println("退出程序!");

break;

}

}


}


}


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

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

2回答
好帮手慕小班 2020-06-13 10:21:01

同学你好,楼上同学的说法是正确的,根据题目要求:

    1、检查贴出代码的实现,并没有多态的内容,为了体现多态,不建议去直接创建实现类的对象,应该先声明一个接口的引用,如:IAct actor=null;然后在case 语句后面进行对象的创建,如case 1后的代码为:actor= new Bear("Bill", 1);

        最后act方法的调用写在switch结构的外面,即即if(actor!=null){actor.act(); }
从上述的流程上看,通过接口的引用指向了子类的对象,最后去调用act()方法,因为actor引用指向的对象不同,调用act()方法就会输出不同的结果。这就是多态的体现。

    2、当选择表演项用户输入错误的时候,应该提示用户重新输入,并重新展示菜单,当问用户是否继续的时候,如果用户输入的不是1或0,应给出错误提示,让用户重新输入,直到用户输入0或1为止。

经过上边的改写,可以用这样的思路:

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。其他提示用户输入有误
    }
}

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

慕丝1539783 2020-06-12 19:50:59

如果你只想进入下次循环,直接if(keep==1){continue;}就可以进入下次循环。

但是你这个程序还有很多要考虑的地方,比如询问是否要继续表演时,还要考虑用户输入错误的情况,用户如果输入错误,不但要提示输入错误,还要重新再问一遍是否继续表演,所以询问继续表演这里又需要一个while(true)循环。

  • 包括上面的input = sc.nextInt();也要考虑用户如果输入字母情况。 还有switch里,如果用户输入的不是1~5的数字,而是其他数字,又该怎么办。
    2020-06-12 19:57:22
  • 提问者 慕设计7678942 #2
    谢谢啦 其他的问题 我想写完主体后再去加try catch
    2020-06-12 20:05:44
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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