You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java开发中如何实现switch语句的case选项仅可被单次使用?

实现方案

这个需求完全可以实现,核心思路是新增状态标记记录0、1、2三个选项的使用情况,每次用户选择后先校验状态再执行对应逻辑即可。

具体实现步骤如下:

  • 在循环外新增一个布尔数组,长度为3,初始值全为false,分别对应三个配料的未使用状态
  • 进入每个case分支时,先检查对应位置的状态标记:如果为true,直接提示用户该配料已添加,无法重复选择
  • 如果状态为false,执行原有的添加价格逻辑,同时把对应位置的标记改为true,后续就无法再次选择该选项

修改后的完整代码如下:

boolean flag = true;
// 下标0对应沙拉、1对应培根、2对应薯条,默认false代表未使用
boolean[] usedToppings = new boolean[3];
while(flag){
    System.out.println("Enter your choice for extra toppings ");
    int choice = scanner.nextInt();
    scanner.nextLine();
    switch(choice) {
        case 0:
            if (usedToppings[0]) {
                System.out.println("salad has already been added, cannot select again\n");
                break;
            }
            double salad = 0.35;
            setAdditional(getAdditional() + salad);
            System.out.println("salad added\n");
            usedToppings[0] = true;
            break;
        case 1:
            if (usedToppings[1]) {
                System.out.println("bacon has already been added, cannot select again\n");
                break;
            }
            double bacon = 1.05;
            setAdditional(getAdditional() + bacon);
            System.out.println("Bacon added \n");
            usedToppings[1] = true;
            break;
        case 2:
            if (usedToppings[2]) {
                System.out.println("fries has already been added, cannot select again\n");
                break;
            }
            double fries = 0.79;
            setAdditional(getAdditional() + fries);
            System.out.println("fries added \n");
            usedToppings[2] = true;
            break;
        case 3:
            System.out.println("Done");
            flag = false;
            break;
        default:
            System.out.println("invalid choice, please try again\n");
    }
}

如果想要优化用户体验,还可以在每次打印输入提示的时候,动态过滤已经被使用的选项,只把剩余可选的选项展示给用户,避免用户输入无效选项。

内容的提问来源于stack exchange,提问作者Florin123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:54:03