在“ scanner.skip()”语句的位置写什么?

时间:2018-09-24 15:28:21

标签: java bufferedreader bufferedwriter

    BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));

    int q = scanner.nextInt();
   scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

skip()方法有什么用途?

我可以用另一种方法替换它以获得相同的结果吗?

1 个答案:

答案 0 :(得分:0)

让我们阅读skip的文档:

  

跳过与从指定字符串构造的模式匹配的输入。

因此skip告诉扫描仪不要读取用户输入的某些部分,然后继续处理这些部分。在这里,您的模式与Windows换行符\r\n或其中之一匹配。

  • U + 2028线分隔符
  • U + 2029参数分隔符
  • U + 0085下一行(NEL)

...如果存在这种模式。

为什么程序员要写这个?一种可能的解释是避免下次调用nextLine返回空字符串。有关发生这种情况的信息,请参见this question

  

我是否要用另一种方法替换以获得相同的结果?

您可以调用skip(Pattern.compile("...")),但实际上这只是同一方法的另一个重载。最接近您正在执行的操作的可能是nextLine,它使用与您相似的模式。