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

Java实现:当字符串不等于多个指定值时的While循环写法

Java实现循环验证输入的方案

嘿,这需求很典型,我给你几个实用的实现思路,都是Java开发里常用的写法,你可以根据自己的Java版本和场景选:

方案1:用集合判断(最灵活,推荐)

把合法选项放进一个Set里,利用contains()方法快速判断,后续要新增或修改选项直接改集合就行,可读性和扩展性都很好。

代码示例

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

public class OptionValidator {
    // 定义合法选项的静态集合,Java 9+可用Set.of(),低版本用new HashSet<>(Arrays.asList("A", "B", "C", "D"))
    private static final Set<String> VALID_OPTIONS = Set.of("A", "B", "C", "D");
    private static String String1 = ""; // 你的静态字符串,初始值根据实际情况设置

    public static void main(String[] args) {
        // 用try-with-resources自动关闭Scanner,避免资源泄漏
        try (Scanner scanner = new Scanner(System.in)) {
            while (!VALID_OPTIONS.contains(String1)) {
                System.out.println("Please enter a correct option");
                // 获取输入并去除前后空格,避免用户输入带空格的无效值
                String1 = scanner.nextLine().trim();
            }
            System.out.println("You entered a valid option: " + String1);
        }
    }
}

方案2:用Switch表达式/语句(Java 12+ 更简洁)

如果你的项目用的是Java 12及以上,switch表达式能让判断逻辑更清晰;低版本可以用传统switch语句。

Java 12+ 代码示例

import java.util.Scanner;

public class OptionValidator {
    private static String String1 = "";

    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            boolean isValid;
            do {
                isValid = switch (String1) {
                    case "A", "B", "C", "D" -> true;
                    default -> false;
                };
                if (!isValid) {
                    System.out.println("Please enter a correct option");
                    String1 = scanner.nextLine().trim();
                }
            } while (!isValid);
            System.out.println("Valid option received: " + String1);
        }
    }
}

Java 8及以下传统Switch示例

import java.util.Scanner;

public class OptionValidator {
    private static String String1 = "";

    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            boolean isValid;
            do {
                isValid = false;
                switch (String1) {
                    case "A":
                    case "B":
                    case "C":
                    case "D":
                        isValid = true;
                        break;
                    default:
                        System.out.println("Please enter a correct option");
                        String1 = scanner.nextLine().trim();
                }
            } while (!isValid);
            System.out.println("Valid option received: " + String1);
        }
    }
}

方案3:直接用equals链式判断(简单场景快速实现)

如果选项很少且不会变动,直接用多个equals判断也能解决问题,注意用**常量.equals(变量)**的写法,避免NullPointerException。

代码示例

import java.util.Scanner;

public class OptionValidator {
    private static String String1 = "";

    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            // 用常量.equals变量,防止String1为null时抛出空指针异常
            while (!"A".equals(String1) && !"B".equals(String1) && !"C".equals(String1) && !"D".equals(String1)) {
                System.out.println("Please enter a correct option");
                String1 = scanner.nextLine().trim();
            }
            System.out.println("Valid option received: " + String1);
        }
    }
}

额外提醒

  • 记得用trim()处理用户输入,避免用户不小心输入空格导致的无效判断;
  • 使用try-with-resources管理Scanner,能自动关闭资源,不用手动调用close();
  • 如果你的静态字符串String1可能被多线程修改,要注意线程安全问题,比如加volatile关键字或者用同步锁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:05:12