老师您好,请问如何做到在输入错误的数字时,重新输入,而不是继续循环

来源:7-1 总结

CodeMz

2019-11-08 18:00:48

public class Test {

	public static void main(String[] args) {
		Test test=new Test();
		Bear bear=new Bear("Bill",1);
		Lion lion=new Lion("Lian",2,"灰色","公狮");
		Monkey monkey=new Monkey("Tom",1,"金丝猴");
		Parrot parrot=new Parrot("Rose",1,"牡丹鹦鹉");
		Clown clown=new Clown("Khale",5);
		Scanner sc=new Scanner(System.in);
		int input=0;
		int input1=0;
		while(true) {
		test.displayMenu();
		try {
			input=sc.nextInt();
		} catch (Exception e) {
			System.out.println("请输入有效数字!");
			sc.next();
			continue;
		}
		switch(input) {
		case 1:bear.act();break;
		case 2:lion.act();break;
		case 3:monkey.act();break;
		case 4:parrot.act();break;
		case 5:clown.act();break;
		}
		System.out.println("*****是否继续观看(1/0)*****");
		try {
			input1=sc.nextInt();
		} catch (Exception e) {
			System.out.println("请输入有效数字!");
			sc.next();
			continue;
		}
		if(input1==0) {
			break;
		}else if(input1==1) {
			continue;
		}else {
			System.out.println("请输入1/0");
			input1=sc.nextInt();
		}
		
		}
		
		
		
	}

比如“是否继续观看(1/0)”提示后如果输入非数字,如何重新输入

写回答

2回答

好帮手慕酷酷

2019-11-08

同学你好,可以参考如下思路:

提示是否观看表演,当输入0或1以外的数字时,应该一直输入,直到正确为止,思路如下:

定义一个boolean值,初始值为true

使用while循环,当boolean值为true时,执行如下操作:

1)输出提示信息是否继续观看,接收从键盘输入的数据。 

2)switch结构,当输入数据为1时,boolean值设置为false

     当输入为0时,提示欢迎下次光临,并调用System.exit(0)退出程序

     当输入0/1以外的值时,提示输入不正确,重新输入

修改后的代码如下:

public class Test {
    public void displayMenu() {
        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();
    }

    public static void main(String[] args) {
        Test test = new Test();
        Scanner sc = new Scanner(System.in);
        int input;
        int index = 0;
        System.out.println("请输入数字  1  至  5 选择表演者!");
        while (true) {
            test.displayMenu();
            try {
                input = sc.nextInt();
            } catch (java.util.InputMismatchException e) {
                System.out.println("输入数据格式有误,不能有非数字!");
                sc.next();
                continue;
            }
            // Boolean(input>=1) {
            switch (input) {
            case 1:
                IAct one = new Bear("Bill", 1);
                one.act();
                break;
            case 2:
                IAct two = new Lion("Lain", 2, "公狮", "灰色");
                two.act();
                break;
            case 3:
                IAct three = new Monkey("Tom", 1, "金丝猴");
                three.act();
                break;
            case 4:
                IAct five = new Parrot("Rose", 1, "牡丹鹦鹉");
                five.act();
                break;
            case 5:
                IAct four = new Clown("Kahle", 5);
                four.act();
                break;
            default:
                System.out.println("输入的数字有误,请重新输入!");
                continue;
            }
            while (true) {
                System.out.println();
                System.out.println("***** 是否继续观看 (1/0) *****");
                try {
                    input = sc.nextInt();
                } catch (java.util.InputMismatchException e) {
                    System.out.println("输入数据格式有误,不能有非数字!");
                    sc.next();
                    continue;
                }
                // 提醒是否继续观看表演
                boolean nextFlag = true;
                while (nextFlag) {
                    System.out.println("******  是否继续观看(1/0) ******");
                    index = sc.nextInt();
                    switch (index) {
                    case 1:
                        nextFlag = false;
                        break;
                    case 0:
                        System.out.println("*******       欢迎下次光临      *******");
                        return;
                    default:
                        System.out.println("** 输入信息不正确,请重新输入 **");
                        break;
                    }
                }
            }
        }
    }
}

关于作业其他小问题,建议同学将作业上交,我们的老师会进行详细的批复哦~

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

1

ByteDancer07

2020-01-05

boolean flag = true;
while (flag){
    System.out.println("******\t是否继续观看(1/0)******");
    input = sc.nextInt();

    switch (input){
        case 1:
            flag = false;
            break;
        case 0:
            System.out.println("******\t欢迎下次光临!\t******");
            return;
        default:
            System.out.println("您输入的数字有误,继续观看请输入1,退出请输入0。");
            break;
    }
}


1

0 学习 · 11489 问题

查看课程