1.0.1<java期末项目>菜单类

该博客介绍了如何构建一个菜单类,用于在控制台中展示选项并根据用户输入调用不同功能。菜单类包含一个循环显示的界面,用户可以选择增加、删除、修改、查找或退出等操作。每个选项对应不同的类方法,通过switch语句实现功能切换。同时,为了允许用户反复执行同一操作,引入了一个内部循环,直到用户选择退出。博客强调了代码的模块化,以便于功能扩展和维护。
摘要由CSDN通过智能技术生成

菜单类,要实现什么功能?

1,一个界面,可以有不同选项供选

2,这个界面必须循环出现,多次供用户选择

3,不同选项对应不同功能调用不同的类

1,界面

我们使用输出语句来打印一个界面:

            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,退出");

 实现类似效果:

 2,循环出现菜单

我们使用while循环,这样方便控制循环,当然,我们需要一个布尔类型的变量——作为循环条件

        boolean flag = true;
        int choice = -1;
        while (flag) {
            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,退出");
          }

3,不同选项对应不同功能

3.1,如何让控制台输入东西可以被接收,从而让程序选择不同的方法?

答:scanner类

我们声明一个scanner类,让它来接收控制台输入

Scanner scanner = new Scanner(System.in);

 这里由数字作为选项,我们需要把控制台的输入赋值给一个整型变量,让它来控制选择哪个选项

choice = scanner.nextInt();

3.2,不同选项 对应 不同的类方法

很明显,我们使用switch函数,而switch函数判断case的变量就是前面的choice

            switch (choice) {
                case 1:
                    break;
                case 2:
                    break;
                case 3:
                    break;
                case 4:
                    break;
                case 5:
                    System.out.println("已经退出程序");
                    flag = false;
                    break;
            }

然后,我们还需要一个方法,来降低耦合,并且让每个选项(增删改查)能够循环使用,直到用户想要执行其他操作 

    private static void circle(Scanner scanner, int choice) {
        //把循环执行的逻辑防在菜单类,各司其职
        boolean controller = true;
        while (controller) {
            switch (choice) {
                case 1:
                    break;
                case 2:
                    break;
                case 3:
                    break;
                case 4:
                    break;
            }
            System.out.println("当前的数据:"+Arrays.toString(arrays.getArr()));
            System.out.println("输入false退出,输入true继续");
            controller = scanner.nextBoolean();
        }
    }

 我们也得修改一下控制大循环(用来控制当前的功能方法的循环)controller变量,否则一旦用户输入错误的值,就会报错:

定义一个小循环除非用户输入正确的字符,否则就一直循环

equal方法可以对比内容,我们定义一个t来接收输入,如果是true或false就相应赋值给controller,并且跳出这个小循环

如果输入的是错误的,就不跳出小循环,让它继续循环(小循环)

          while (true) {
                System.out.println("输入false退出,输入true继续");
                String t = scanner.next();
                //这里防止误输或恶意输入
                if (t.equals("true")) {
                    controller = true;
                    break;
                } else if (t.equals("false")) {
                    controller = false;
                    break;
                } else {
                    System.out.println("请按提示输入");
                }
            }

好了,我们写好了菜单类,完整的菜单如下

    public static void menu() throws Exception{
        setArr();
        boolean flag = true;
        int choice = -1;
        while (flag) {
            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,退出");
            Scanner scanner = new Scanner(System.in);
            choice = scanner.nextInt();
            switch (choice) {
                case 1:
                    circle(scanner, 1);
                    break;
                case 2:
                    circle(scanner, 2);
                    break;
                case 3:
                    circle(scanner, 3);
                    break;
                case 4:
                    circle(scanner, 4);
                    break;
                case 5:
                    System.out.println("已经退出程序");
                    flag = false;
                    break;
            }
        }
    }
    private static void circle(Scanner scanner, int choice) {
        //把循环执行的逻辑防在菜单类,各司其职
        boolean controller = true;
        while (controller) {
            switch (choice) {
                case 1:
                    break;
                case 2:
                    break;
                case 3:
                    break;
                case 4:
                    break;
            }
            System.out.println("当前的数据:"+Arrays.toString(arrays.getArr()));
            System.out.println("输入false退出,输入true继续");
            controller = scanner.nextBoolean();
        }
    }

 菜单类就像一个机器人的身体,增删改查是它的四肢,我们用菜单类整体调用其他的函数,就像把四肢组装到机器人的身躯上,我们不在菜单类写其他功能的逻辑(代码),因为这样才能实现像插件一样各自独立,而不是让它们耦合,到时候修改功能必须两头改

这里的菜单类并不是完整版,因为后续的组装功能函数会让菜单类有一些变动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞鸟malred

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值