- •Тема 1. Вступ до дисципліни
- •Тема 2. Управління ходом дій операторів програми
- •Тема 3. Ініціалізація та завершення дії змінних
- •Тема 4. Реалізація і специфікатори доступу
- •Тема 5. Успадкування в Java та його особливості
- •2. Розробка програмних систем складної структури
- •Тема 10. Створення вікон і аплетів
- •Тема 11. Розподільне програмування
- •1. Вступ до мовного середовища. Ознайомлення з мовним середовищем. Початкові відомості про мовне середовище java
- •1.1. Виконання Java-програми
- •Питання і завдання
- •1.4. Інтегроване середовище jBuilder
- •2. Постулати об'єктно-орієнтованого програмування
- •2.1. Модель і абстракція
- •2.2. Ієрархія та успадкування
- •2.4. Класи, їх структура та зміст
- •3. Управління ходом дії операторів програми
- •Питання і завдання
- •4.1. Ініціалізація за допомогою конструктора
- •4.2. Конструктор без параметрів
- •4.3. Перевантаження методів
- •4.4. Ініціалізація членів класу
- •5. Реалізація
- •6. Успадкування в java та його особливості
- •Завдання для самостійного опрацювання теми
- •7. Динамічне зв'язування (поліморфізм)
- •Завдання для самостійного опрацювання теми
- •8. Інтерфейси та внутрішні класи
- •Завдання для самостійного опрацювання теми
- •9. Обробка помилок і виключних ситуацій
- •Завдання для самостійного опрацювання теми
- •10. Система вводу/виводу в java
- •Завдання для самостійного опрацювання теми
- •Програма DirList.Java
- •11. Створення вікон і аплетів
- •Завдання для самостійного опрацювання теми
- •12. Створення додатків windows
- •12.1. Сім'я операційних систем Windows
- •12.2. Структура додатка Windows
10. Система вводу/виводу в java
1. Клас File.
2. Типи вхідних і вихідних потоків.
3. Класи для читання і запису даних.
4. Стандартний ввід/вивід.
Завдання для самостійного опрацювання теми
1. Відкрити текстовий файл, який можна прочитати по рядках. Зчитати з нього по одному рядку String і помістити отриману інформацію в список LinkedList. Надрукувати всі рядки у зворотньому порядку, використовуючи можливості класу LinkedList.
2. Модифікувати завдання 1 так, щоб ім'я файла з оброблюваним текстом передавалося в командному рядку.
3. Модифікувати завдання 2 так, щоб усі зчитані рядки перетворились у верхній регістр букв, і надрукувати результати (стандартний вивід System out).
4. Модифікувати завдання 2 так, щоб програма також обробляла додаткові аргументи командного рядка як слова для пошуку у файлі.
Надрукувати рядки, де було знайдено вказані слова.
5. Створити клас з ім'ям SortedDirList, конструктор якого приймає інформацію про шлях файла та на основі цієї інформації складає відсортований список файлів у вказаній директорії. Створити два перевантажених методи list(), один з яких має повертати весь список файлів, а другий — підмножину списку залежно від переданого йому параметра. Додати до класу метод size(), який набуває, як параметр, ім'я файла і повертає розмір цього файла.
6. Змінити програму DirList.java так, щоб фільтр імен файлів FilenameFilter сам відкривав файли і визначав їхню придатність до списку файлів. Основою для цього є їхній внутрішній зміст і допоміжні аргументи командного рядка:
Програма DirList.Java
import Java. io. *;
import Java. util. *;
import com.bruceeckel.util. *;
public class DirList {
public static void main(String[] args) {
File path = new File(«.»);
String [] list;
if (args. length —=0)
list = path.list();
else
list = path.list(new
DirFilter(args [0]));
Arrays, sort (list, new
AlphabeticComparator());
for (int i=0; i<list.length; i++)
System.out.println (list[i]);
}}
class DirFilter implements FilenameFilter {
String afn;
DirFilter (String afn) {this.afn = afn;}
public boolean accept(File dir, String name) {
String f= new File (name). getName();
return findexOf(afn) != -1;
}
}///:~
Для програми WordCount.java i
іmport java. io. *
import Java. Util. *;
class Counter {
private int i=l;
int read() {return i;}
void increment() {i+ +;}
}
public class WordCount {
private FileReaderfile;
private StreamTokenizer st;
//Таблиця ТгееМар зберігає ключі відсортованими
private ТгееМар counts = new TreeMap();
WordCount (String filename)
throws FileNotFoundExaption {
try{
file = new FileReader (fileпате);
st = new StreamTokenizer (new Bufered Reader(file));
st.ordinaryChar('.');
st. ordinary Char ('-');
cath(FileNotFoundExcepion e) {
System.err.println (
«Неможливо відкрити файл» + filename);
throw e;
}
}
void cleanup() {
try{
file.close();
} catch (IOException e) {
System. err.println(
«Неможливо виконати file.close()»);
}
}
void count Words() {
try{
while(st.nextToken() != StreamTokenizer.TT_EOF)
{ String s;
switch (st. ttype) {
case StreamTokenizer. ТT_EOL;
s = new String("EOL ");
break;
case
StreamTokenizer. TT_NUMBER;
s = Double. toString(st.nval);
break;
case
StreamTokenizer. TT_WORD;
s = st.sval;
break;
default: //в ttype знаходить один символ
s = String.valueOf((char)st.ttype);
}
if (counts. containsKey(s))
((Counter)counts.get(s).increment();
else
counts.put(s. new Counter());
}
} catch (IOException e) {
System. err.println(
«Помилка при виклику методу» st.next Token();
}
}
Collection values () {
return counts.values ();
}
Set keySet () {return coun.keySet ();}
Counter getCounter (String s) {
return (Counter)counts.get(s);
}
public static void main(String[] args)
throws FileNotFoundException {
WordCount wc = new
WordCount(args[O]) ;
wc. countwords();
Iterator keys = wc.keySet().iterator();
while (keys.hasNext()) {
String key = (String)keys. next();
System.out.println(key + «:»
+ wc. getCounter (key). read());
} wc.cleanup();
}
}///:~
7.1. Змінити програму так, щоб вона сортувала слова за алфавітом.
7.2 Змінити програму так, щоб вона використовувала клас із рядком String і лічильником для кожного окремого слова, а також множину Set для зберігання списку слів.