我是Java的新手,正试图了解Scanner类。我正在使用example code来了解Scanner类的skip(String Pattern)方法。我稍微调整了代码,然后将其更改为

import java.util.*;

public class ScannerDemo {

   public static void main(String[] args) {

      String s = "Hello World! 3 + 3.0 = 6.0 true ";

      // create a new scanner with the specified String Object
      Scanner scanner = new Scanner(s);

      // changed the string to skip
      scanner.skip("World");

      // print a line of the scanner
       System.out.println("" + scanner.nextLine());

      // close the scanner
      scanner.close();
   }
}


我期望的输出是

Hello ! 3 + 3.0 = 6.0 true


但我得到NoSuchElementException。请有人指出我的错误。

最佳答案

不是nextLine会给您例外,而是skip(“ World”)。

扫描仪启动时,它指向“ Hello Word ...”中的“ H”,即第一个字母。

然后,您告诉他跳过,并且必须为跳过给出正则表达式。

现在,跳到“世界”一词之后的一个很好的正则表达式是:

scanner.skip(".*World");


“。* World”表示“每个字符后跟世界多次”。

这会将扫描仪移至“!”在“ Hello World”之后,因此nextLine()将返回

! 3 + 3.0 = 6.0 true


按照跳过,“ Hello”部分已被跳过。

关于java - Java中的Scanner.skip(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25700922/

10-12 00:35
查看更多