Философия Java3
вернуться

Эккель Брюс

Шрифт:

В методе symmetricScramble цикл while выполняется до тех пор, пока позиция не станет равной предельному значению. Позиция буфера изменяется при вызове для него «относительных» методов put или get. Можно также использовать «абсолютные» версии методов put и get, которым передается ар-гумент-индекс, указывающий, с какого места начнет работу метод put или метод get. Эти методы не изменяют значение позиции буфера.

Когда управление переходит в цикл while, вызывается метод mark для установки значения метки (шаг). Состояние буфера в этот момент таково:

QJoS]

| пгаг I

I cap 1

и

S

i

п

g

в

и

f

f

е

г

s

lim

Два вызова «относительных» методов get сохраняют значение первых двух символов в переменных cl и с2. После этих вызовов буфер выглядит так:

mar

ГроЛ

Два вызова метода put записывают с2, а затем cl:

I Pos I

cap]

>

г

1

г

и

S

i

п

g

в

U

f

f

е

г

S

к

к

k

к

lim

pos |

Для смешивания символов нам нужно записать символ с2 в позицию 0, a cl в позицию 1. Для этого можно обратиться за .«абсолютной» версией метода put, но мы приравняем позицию метке, что и делает метод resetQ:

| mar

1

г

1

г

и

S

i

п

g

в

U

f

f

е

г

S

к

к

)

к

з

cap |

>

г

1

г

и

S

i

п

g

в

U

f

f

е

г

S

i

к

k

к

Rim

На следующей итерации значение метки приравнивается позиции:

mar

cap |

>

г

>

г

и

S

i

п

g

в

U

f

f

е

г

s

k

к

k

к

lim

pos I

Процесс продолжается до тех пор, пока не будет просмотрен весь буфер. В конце цикла while позиция находится в конце буфера. При выводе буфера на печать распечатываются только символы, находящиеся между позицией и предельным значением. Поэтому, если вы хотите распечатать буфер целиком, придется установить позицию на начало буфера, используя для этого метод rewind. Вот в каком состоянии находится буфер после вызова метода rewind (значение метки стало неопределенным):

  • Читать дальше
  • 1
  • ...
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win

Подпишитесь на рассылку: