Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Опис вихідного тексту додатка

Після вводу рядка із клавіатури й записи її у файл через потік наш додаток створює вхідний буферізований потік, як це показано нижче:

InStream = new DataInputStream(new BufferedInputStream( new FileInputStream("output.txt")));

Далі для цього потоку створюється розбирач, що оформлений в окремому класі TokenizerOfStream, певному в нашім додатку:

TokenizerOfStream tos = new TokenizerOfStream();

Слідом за цим ми викликаємо метод TokenizeIt, певний у класі TokenizerOfStream, передаючи йому як параметр посилання на вхідний потік:

tos.TokenizeIt(InStream);

Метод TokenizeIt виконує розбір вхідного потоку, відображаючи результати розбору на консолі. Після виконання розбору вхідний потік закривається методом close:

InStream.close();

Саме цікаве в нашім додатку зв'язано, мабуть, із класом TokenizerOfStream, тому перейдемо до його опису.

У цьому класі визначений тільки один метод TokenizeIt:

public void TokenizeIt(InputStream is){ . . .}

Одержуючи як параметр посилання на вхідний потік, він насамперед створює для нього розбирач класу StreamTokenizer:

StreamTokenizer stok;stok = new StreamTokenizer(is);

Настроювання параметрів розбирача дуже простий і зводиться до викликів усього двох методів:

stok.slashSlashComments(true);stok.ordinaryChar('.');

Метод slashSlashComments включає режим розпізнавання коментарів у стилі мови програмування З++, а метод ordinaryChar повідомляє символ '.' звичайним символом.

Після настроювання запускається цикл розбору вхідного потоку, причому умовою завершення циклу є досягнення кінця цього потоку:

while(stok.nextToken() != StreamTokenizer.TT_EOF){ . . .}

У циклі аналізується вміст поля ttype, що залежить від типу елемента, виявленого у вхідному потоці:

switch(stok.ttype){ case StreamTokenizer.TT_WORD: { str = new String("\nTT_WORD >" + stok.sval); break; } case StreamTokenizer.TT_NUMBER: { str = "\nTT_NUMBER >" + Double.toString(stok.nval); break; } case StreamTokenizer.TT_EOL: { str = new String("> End of line"); break; } default: { if((char)stok.ttype == '"') str = new String("\nTT_WORD >" + stok.sval); else str = "> " + String.valueOf((char)stok.ttype); }}

На слова й чисельні значення ми реагуємо дуже просто - записуємо їхнє текстове подання в робочу змінну str типу String. При виявленні кінця рядка в цю змінну записується рядок End of line.

Якщо ж виявлений звичайний символ, ми порівнюємо його із символом лапок. При збігу в змінну str записується вміст поля sval, у якому перебувають слова, виявлені усередині лапок. Якщо ж виявлений символ не є символом лапок, він перетвориться в рядок і записується в змінну str.

У висновку метод виводить рядок str у стандартний потік виводу, відображаючи на консолі виділений елемент потоку:

System.out.println(str);



Переглядів: 275

<== попередня сторінка | наступна сторінка ==>
Вихідний текст додатка | Додаток DirectFile

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.013 сек.