首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scanner.skip()

Scanner.skip()
EN

Stack Overflow用户
提问于 2014-09-06 13:45:22
回答 3查看 5.9K关注 0票数 1

我对Java非常陌生,并试图理解Scanner类。我正在使用示例代码来了解Scanner类的skip(String )方法。我稍微修改了一下代码,并将其更改为

代码语言:javascript
复制
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();
   }
}

我期望的输出是

代码语言:javascript
复制
Hello ! 3 + 3.0 = 6.0 true

但我得到了NoSuchElementException。有人能指出我的错误吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-06 13:54:42

不是nextLine给了您异常,而是跳过(“World”)。

当扫描器开始时,它指向"Hello Word.“中的"H”,这是第一个字母。

然后你告诉他跳过,必须给出一个规则表达式的跳过。

现在,在单词"World“之后跳过的一个很好的正则表达式是:

代码语言:javascript
复制
scanner.skip(".*World");

".*World“的意思是”每一个字符,无论多少次都跟着世界“。

这将把扫描仪移到"!“在"Hello“之后,因此nextLine()将返回

代码语言:javascript
复制
! 3 + 3.0 = 6.0 true

"Hello“部分已经跳过了,按照跳过的方式。

票数 6
EN

Stack Overflow用户

发布于 2014-09-06 13:49:59

Scanner源字符串指向字符串中的第一个单词,即Hello。要获得预期的输出,它可能更简单,只需从字符串中删除单词即可。

代码语言:javascript
复制
s = s.replace("World", "");
票数 0
EN

Stack Overflow用户

发布于 2014-09-06 13:53:17

你为什么要用扫描仪把它拿出来?可以很容易地在字符串中使用替换方法。

代码语言:javascript
复制
s = s.replace("World", "");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25700922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档