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

Java如何实现多正确选项的循环输入验证?

实现输入验证的循环改进方案

方案一:基于switch的循环验证

把输入和判断逻辑包裹在do-while循环中,通过布尔变量标记输入是否有效,直到用户输入正确选项为止:

import java.util.Scanner;

public class WanderingCats {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String pBackg;
        boolean isValidInput = false;

        do {
            System.out.println("");
            System.out.println("Please type your Cat's BACKGROUND!");
            System.out.println("Your options are:");
            System.out.println("DOMESTIC / CLAN / STRAY");
            pBackg = input.nextLine().trim(); // 去除输入前后的空格,避免匹配失败

            switch(pBackg) {
                case "DOMESTIC":
                    System.out.println("You're a DOMESTIC cat!");
                    isValidInput = true;
                    break;
                case "CLAN":
                    System.out.println("You're a CLAN cat!");
                    isValidInput = true;
                    break;
                case "STRAY":
                    System.out.println("You're a STRAY cat!");
                    isValidInput = true;
                    break;
                default:
                    System.out.println("Invalid input! Please enter one of the valid options.");
            }
        } while (!isValidInput);

        input.close(); // 关闭Scanner释放资源
    }
}

关键说明:

  • do-while循环保证至少执行一次输入请求,完美匹配“先输入再验证”的需求。
  • isValidInput变量用于标记输入是否符合要求,只有当输入有效时才会将其设为true,从而退出循环。
  • .trim()方法处理用户输入时的前后空格,避免因误输入空格导致匹配失败。

方案二:基于集合的验证(扩展性更好)

如果后续需要调整有效选项,用集合存储选项可以避免修改大量分支代码,更易维护:

import java.util.Scanner;
import java.util.Set;
import java.util.HashSet;

public class WanderingCats {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String pBackg;
        // 存储所有有效选项
        Set<String> validOptions = new HashSet<>(Set.of("DOMESTIC", "CLAN", "STRAY"));

        do {
            System.out.println("");
            System.out.println("Please type your Cat's BACKGROUND!");
            System.out.println("Your options are:");
            System.out.println("DOMESTIC / CLAN / STRAY");
            pBackg = input.nextLine().trim();

            if (validOptions.contains(pBackg)) {
                System.out.printf("You're a %s cat!%n", pBackg);
                break; // 输入有效,直接跳出循环
            } else {
                System.out.println("Invalid input! Please enter one of the valid options.");
            }
        } while (true); // 无限循环直到输入有效

        input.close();
    }
}

关键说明:

  • Set<String>存储所有有效选项,通过contains()方法快速判断输入是否合法。
  • 后续新增或修改选项时,只需调整集合中的元素,无需改动判断逻辑,扩展性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:57:43