Что я пишу вместо выражения "scanner.skip ()"? - PullRequest
0 голосов
/ 24 сентября 2018
    BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));

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

Какая польза от этого метода skip()?

Можно ли заменить его другим методом, чтобы получить тот же результат?

1 Ответ

0 голосов
/ 24 сентября 2018

Давайте прочитаем документы для skip:

Пропускает ввод, соответствующий шаблону, составленному из указанной строки.

Итак skip говорит сканеру не читать некоторые части пользовательского ввода и продолжать после этих частей.Здесь ваш шаблон соответствует символу новой строки Windows \r\n или одному из них ...

  • U + 2028 LINE SEPARATOR
  • U + 2029 PARAGRAPH SEPARATOR
  • U + 0085 СЛЕДУЮЩАЯ ЛИНИЯ (NEL)

... если такой шаблон существует.

Почему программист пишет это?Возможное объяснение - избегать следующего вызова nextLine, возвращающего пустую строку.См. этот вопрос , почему это происходит.

Могу ли я заменить другой метод, чтобы получить тот же результат?

Вы могли бы позвонить skip(Pattern.compile("...")), но на самом деле это просто очередная перегрузка того же метода.Наиболее близким к тому, что вы делаете, является, вероятно, nextLine, который использует шаблон, аналогичный вашему.

...