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
相关产品推荐
相关产品推荐

