Что сканер пропускает в Java и зачем его использовать?

Замените -Xmx2G^ на -Xms512M^ или любой больший размер памяти в файле cassandra.bat в каталоге bin cassandra.

0
задан Ratan Uday Kumar 13 July 2018 в 06:35
поделиться

2 ответа

Scanner.skip

public Scanner skip(Pattern pattern)

Пропускает ввод, соответствующий указанному шаблону, игнорируя разделители. Этот метод пропускает ввод, если привязка соответствия указанного шаблона завершается успешно. Если совпадение с указанным шаблоном не найдено в текущей позиции, то ни один вход не пропускается и не генерируется исключение NoSuchElementException.

Поскольку этот метод пытается совместить указанный шаблон, начиная с текущего положения сканера, шаблоны который может соответствовать большому количеству входных данных (например, «. *»), может привести к тому, что сканер будет буферировать большой объем ввода.

Таким образом, это позволяет вам «перемещать» положение сканера используя регулярное выражение.

Пример:

Пропустить начало строки:

Scanner scan = new Scanner("Hello world");
scan.skip("Hello ");

System.out.println(scan.nextLine());
scan.close();

world

Поскольку это использует регулярное выражение, вы пропускаете до работы в середине строки:

Scanner scan = new Scanner("Hello world, I am happy to see you");
scan.skip(".*I am ");

System.out.println(scan.nextLine());
scan.close();

рад видеть вас

1
ответ дан AxelH 17 August 2018 в 13:42
поделиться

Метод skip() этого класса делает именно это. Он пропустит вход, соответствующий шаблону. В этом случае шаблон говорит, чтобы пропускать возврат каретки (\r) и новые строки (\n), а также некоторые символы Unicode.

Итак, когда строка читается, она игнорирует этот шаблон и возвращает только остальную часть строки. Простым примером будет такой. Предположим, у вас есть строка:

String s = "Hello world, this is my scanner!";

Тогда, если у вас есть сканер, например:

Scanner scan = new Scanner(s);
scan.skip(", this is my scanner");

Затем, когда вы выполните:

System.out.println("" + scanner.nextLine());

Выход на консоль будет просто

Hello world!

Что произошло, так это соответствие ", this is my scanner" , и игнорируется с входа. Тогда все, что осталось, это строка "Hello world!".

0
ответ дан Timothy Winters 17 August 2018 в 13:42
поделиться
  • 1
    skip будет выполняться во время вызова метода, а не во время следующих действий чтения. Таким образом, вы получите NoSuchElementException` во время skip, поскольку вы пытаетесь skip что-то, что не найдено, оно начинается с "Hello world". Это объяснение неверно. – AxelH 13 July 2018 в 07:59
Другие вопросы по тегам:

Похожие вопросы: