有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如果下一个标记与任何指定字符串都不匹配,如何抛出InputMismatchException?

我知道Scanner.next("A")将返回字符串“A”,如果下一个标记匹配“A”,否则它将抛出和InputMismatchException。但是我的代码需要这样,如果它无法从一组字符串中找到任何匹配项,它将抛出InputMismatchException。例如,如果“A”、“B”或“C”都不是下一个标记,我希望抛出InputMismatchException


共 (1) 个答案

  1. # 1 楼答案

    可以将Scanner.next(Pattern)与regexp模式一起使用:

    Pattern pattern = Pattern.compile("[ABC]");
    myScanner.next(pattern);
    

    甚至

    myScanner.next("[ABC]");
    

    因为,根据Javadoc,Scanner.next(String)

    An invocation of this method of the form next(pattern) behaves in exactly the same way as the invocation next(Pattern.compile(pattern)).

    您甚至不必担心带有next(String)的版本每次都会构建一个模式对象,因为实现维护模式对象的缓存

    编辑:如果要匹配的字符串不是单个字符,则正则表达式模式会有所不同:

    myScanner.next("(AB|CD|EF)"); // throws for everything except AB, CD and EF.