2012-05-13 2 views
1

В настоящее время у меня есть оператор If, который проверяет, соответствует ли следующее слово в документе определенной длине. После того, как он вернет true, я хочу добавить это слово в массив или строку и т. Д. Моя проблема заключается в том, что однажды я использую следующую() команду, она переходит к следующему значению в документе, хотя я использовал его в состоянии Если утверждение. Я несколько новичок в Java, поэтому надеюсь, что этот простой щелчок имеет смысл.Сканер Java - Как вернуться к последнему слову после использования next()

Scanner in1 = new Scanner(inputFile); 
String inputString; 

while(in1.hasNextLine()){ 
    if(in1.next().length() == 6){ 
      inputString = in1.next(); 
    } 
} 

В принципе, у меня есть файл, содержащий несколько слов, различной длины на нескольких строках. Я хочу поймать слово, в котором есть 6 символов. Фактический цикл while и файла более сложный, проблема в том, что он переходит к следующему слову после того, как он оценивает оператор If. Поэтому, если он обнаруживает, что следующее слово имеет 6 символов, оно загружает следующее слово, которое приходит после него в переменную. Любая помощь или совет приветствуются!

ответ

2

Вы можете разделить эту петлю вверх на две части:

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

Например:

while(in1.hasNextLine()) { 
    String current = in1.next(); 
    if(current.length() == 6) { 
      inputString = current; 
    } 
} 

Это стандартный метод при использовании итераторов или сканеров именно по той причине, вы отметили - метод next() нельзя назвать несколько раз без получения различных значений.

В качестве альтернативы, другие языки программирования разработали свои итераторы, чтобы получить значение, повторяющееся и продвигающееся к следующему местоположению, являются отдельными шагами. Примечательно, что C++ STL считает, что это разные операции.

Надеюсь, это поможет!

+0

Отлично работает! Была простая логика, над которой я думал! – RedHatcc

2

Захватите значение next() в переменную, сравните, установите inputString на эту переменную. Если длина неправильная, то, что приходит дальше, может использовать одну и ту же переменную, избегая дополнительных дополнительных next(). Не уверен, что это делает то, в чем вы нуждаетесь.

+0

Вы также правы. Это логика, которая будет использоваться. Простой, но иногда может быть задумано. Спасибо! – RedHatcc

Смежные вопросы