Java 为什么findInLine(令牌)有效,而hasNext(令牌)无效';T

Java 为什么findInLine(令牌)有效,而hasNext(令牌)无效';T,java,java.util.scanner,Java,Java.util.scanner,我试图理解Scanner类及其方法。我已经理解了findInLine方法是如何工作的,但我不理解hasNext(String)和next(String)方法是如何工作的 这是我的密码 import java.util.Scanner; public class ScannerTest { public static void main(String[] args) { hasNextTest("\\d"); //findInLineTest("\\d

我试图理解Scanner类及其方法。我已经理解了
findInLine
方法是如何工作的,但我不理解
hasNext(String)
next(String)
方法是如何工作的

这是我的密码

import java.util.Scanner;

public class ScannerTest {

    public static void main(String[] args) {

        hasNextTest("\\d");
        //findInLineTest("\\d");
    }

    public static void findInLineTest(String token) {
        Scanner s = new Scanner(System.in);
        System.out.println("Input source string :");
        System.out.flush();
        String str = null;
        while (( str = s.findInLine(token)) != null) {
            System.out.println(str);
        }
        System.out.flush();
        s.close();
    }

    public static void hasNextTest(String token) {
        Scanner s = new Scanner(System.in);
        System.out.println("Input source string :");
        System.out.flush();
        System.out.println(s.hasNext(token));
//      while (s.hasNext(token)) {

//          System.out.println(s.next(token));
//      }
        System.out.flush();
        s.close();
    }

}

我不明白的是,如果我传递给扫描器字符串“abcd12345abcd”或说任何其他有数字的字符串,则方法
hasNext(\\d”)
不会返回true。对于
hasNext(String)
方法应返回true的任何模式和字符串,它不会
返回true。我没有正确使用扫描仪对象,但有人能帮我找到错误吗

谢谢。

hasNext(模式)
尝试将指定模式与整个令牌匹配。字符串“abcd12345abcd”没有分隔符,因此它构成一个标记。您的模式将查找由一个数字组成的令牌,该数字显然不匹配


findInLine(pattern)
另一方面,尝试在行中的任何位置查找模式,以便第一个找到的数字匹配。

“对于hasNext(String)方法应返回true的任何模式和字符串,它都不会返回true。”对于“abcd12345abcd”是true,对于
\\d
,它显然是false,因为下一个标记不是数字。这是我的输出-输入源字符串:abcd1234abcd FALSE“abcd1234abcd”是数字吗?看起来不像。
hasNext(String)
的文档是否表明它在下一个标记中寻找与模式匹配的东西,比如
findInLine
呢?哦,我现在明白了。它看不到整个字符串的内部。但如果我的模式是“12”,输入字符串是“12”,它会按预期打印12两次。但是如果我提供“123412”作为输入,“12”作为模式,那么唯一的匹配是12次。因此,这种方法首先通过在空格之间拆分输入字符串,将其拆分为标记,然后查找匹配项,当下一个标记为34时,while循环失败。是的,这是正确的。