Робота зі стрічками в Java

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Об’єктно-орієнтоване програмування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР    ЗВІТ До виконання лабораторної роботи №2 На тему: “ Робота зі стрічками в Java” З курсу “ Об’єктно-орієнтоване програмування” МЕТА РОБОТИ Отримати навики програмування з використанням стрічок мови Java. 2.ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ 2.1. ТИПИ ДАНИХ І ДЕКЛАРАЦІЯ ЗМІННИХ Мова програмування Java є мовою зі строгою типізацією (strongly typed language). Це означає, що кожна змінна і кожний вираз мають тип, який має бути відомий під час компіляції програми. У Java визначено дві категорії даних: примітивні типи (primitive types); типи посилання (reference types). Існує також спеціальний нульовой тип (null), який не має імені. Примітивні типи діляться на булівський тип (boolean) і числові типи. В свою чергу, числові типи – це цілі типи (byte, short, int, long та char) дробові типи (float та double). Типы посилання – це типи класів, інтерфейсів та масивів. Декларація змінних (за виключенням масивів) в Java має наступний вигляд: і’мя типу ідентифікатор-змінна; наприклад: int x; String str1; int x1, x2, x3; double inputValue; Змінна є вказуванням місця зберігання значення змінної в пам’яті. Змінна примітивного типу завжди містить значення змінної вказаного типу (наприклад, int), а змінна типу посилання містить посилання (адрес) на об’єкт вказаного типу. Створювати змінні можна в будь-якому місці програми. Будь-яка декларація змінної має свою область видимості, межі якої залежать від того, де розміщенно цю декларацію. Коли текст програми знаходиться в парі фігурних лапок { }, то створюється новий блок. Блоки в програмі на мові Java можуть бути вкладеними. Змінна доступна в блоці тільки в тому випадку, якщо вона визначена в цьому блоці, чи в одному із блоків, що містять даний блок і стоять вище. На відміну від мови C, у внутрішньому блоці не можна декларувати змінну з таким ж іменем, як і в зовнішній області видимості. Також крім області видимості, кожна змінна має і час життя. Коли поточний блок, в якому змінна була задекларована, закінчується, то вона стає доступною для знищення за допомогою збірача сміття (garbage collector). Змінити область видимості та час життя змінної жизни можна за допомогою ідентифікаторів доступу. Модифікатори вставляються в декларацію змінної перед іменем-типу. По замовчуванню (без модифікатора) змінна доступна тільки класам в тому ж пакеті, що і клас, в якому вона міститься. Модифікатор public визначає, що змінна доступна як всередині, так і ззовні класу, тобто змінна є глобальною і доступна будь-якому іншому об’єкту. Модифікатор private, навпаки, означає, що змінна доступна тільки в тому класі, в якому вона була декларована. Модифікатор final визначає, що змінна має постійне (незмінне) значення і не може бути перевизначена. int final GREEN_COLOR =2; 2.2. ОПЕРАТОРИ ПЕРЕДАЧІ УПРАВЛІННЯ В Java існують такі види операторів управління програми: - умовний оператор (if-else);; - оператори циклу (for, while, do…while); - оператори переходу (break, continue, return); - оператор вибору (switch). 2.3. РОБОТА ЗІ СТРІЧКАМИ (CLASS STRING) Для зберігання і обробки рядків в Java є два класи: String для незмінних рядків і StringBuffer - для рядків, які можуть змінюватися. Обидва класи розширюють клас Object. Вони знаходяться в пакеті java.lang, тому їх не треба підключати за допомогою оператора import. Рядкові літерали в Java, як і в C, обмежуються подвійними апострофами, наприклад, "abc" задає рядковий літерал abc. Якщо усередині рядкового літерала необхідно задати символ апострофа, він задається за допомогою символів \", наприклад, "it\"s" задає рядковий літерал it"s. Ініціалізація об'єкту класу String може виконуватися як за допомогою оператора присвоєння змінної класу String рядкової змінної або рядкового літерала, наприклад: String str = "Рядок 1"; або при створенні об'єкту за допомогою оператора new з використанням одного з наступних конструкторів класу String: Конструктор Об'єкт, який він створює  String() Порожній рядок.  String (String original) Новий рядок, який є копією рядок original.  String(char[] value) Рядок, створений з елементів масиву value.  String(char[] value, int offset, int length) Рядок, створений з підмасиву символів value, що починається з позиції offset і завдовжки len символів.  String(byte[] bytes) Рядок, що створюється з масиву байт, з використанням кодування на даному комп'ютері за умовчанням Windows-1251) кожного символу.  String(byte[] bytes, int offset, int length)  Рядок, що створюється з частини масиву байт, що починається з індексу offset і містить length байт.   Довжина рядка може бути визначена за допомогою методу public int length(). Єдина операція, яку можна використовувати для рядків, є операція зчеплення (конкатенація) двох або більш рядків - "+". 2.3.1. Порівняння рядків Оскільки в Java рядки є об'єктами, для порівняння рядків можна використовувати оператора "==" і метод public boolean equals(Object anObject) що порівнює рядок, для якого викликається метод, з об'єктом anObject. Результат буде true, тільки якщо anObject є рядком і значення порівнюваних рядків рівні. Використання оператора "==" для порівняння рядків може привести до невірного результату, якщо порівнювані рядки - різні об'єкти, тому переважнішим є використання методу equals() (цей метод працює і для рядків String і для рядків StringBuffer). Інші методи порівняння рядків, що також повертають булеві значення, приведені в таблиці: Метод Повертає true, коли  equalsIgnoreCase(String anotherString) Рядок дорівнює anotherString, незалежно від регістра символів.  startsWith(String prefix) Рядок починається з prefix.  startsWith(String prefix, int toffset) Підрядок рядка prefix, починаючи з позиції toffset, міститься на початку рядка, що перевіряється.  endsWith(String suffix) Рядок закінчується на suffix.  regionMatches(int toffset, String other, int ooffset, int len) Підрядок в рядку, починаючи з позиції із зсувом toffset, відповідає підрядку, що починається по зсуву ooffset, для len символів.  regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)  Той же, що і попередній метод, але ігнорує регістр символів, коли ignoreCase рівне true.   Метод int compareTo(String anotherString) - лексикографічно порівнює два рядки і повертає 0, якщо рядки рівні по довжині і мають однакове, значення, менше 0, якщо в першій позиції, в якій символи рядків не рівні, код символу в першому рядку менше коду символу в другому рядку або довжина першого рядка менше довжини другого рядка всі символи першого рядка рівні символам в тих же позиціях другого рядка. Якщо в першій позиції, в якій символи рядків не рівні код символу в першому рядку більше коду символу в другому рядку або довжина першого рядка більше довжини другого рядка, повертається значення, більше 0. 2.3.2. Пошук в рядках Для пошуку символів або послідовностей символів (тільки в рядках класу String) використовуються наступні перенавантажувані методи indexOf(), приведені в таблиці: Декларація метода Значення, що повертається  int indexOf(int ch) Перша позиція в рядку, в якому зустрічається символ ch.  public int indexOf(int ch, int fromIndex) Перша позиція в рядку, починаючи з символу fromIndex,в якій зустрічається символ ch.  int indexOf(String str)  Перша позиція в рядку, в якому зустрічається рядок str.  public int indexOf(String str, int fromIndex)  Перша позиція в рядку, починаючи з символу fromIndex,в якій зустрічається рядок str.   Для кожного методу indexOf() є відповідний метод lastIndexOf(), який починає пошук символу або рядка не з початку, а з кінця рядка. Якщо символ або рядок не знайдені в рядку, в якому проводиться пошук, методи indexOf() і lastIndexOf() повертають значення -1. 2.3.3. Витягання символів і підрядків з рядка Витягання символів і підрядків з рядка, а також створення нових рядків на основі існуючих рядків виконується за допомогою методів, приведених в таблиці: Метод Значення, що повертається  char charAt(int index) Символ рядка у позиції index.  char[] toCharArray() Масив символів - копію рядка.  String substring(int beginIndex) Підрядок початкового рядка, що починається з позиції beginIndex початкового рядка.  String substring(int beginIndex, int endIndex)  Підрядок початкового рядка, що починається у позиції beginIndex і закінчується в позиції endIndex-1 початкового рядка.  void getChars (int srcBegin, int srcEnd, char[] dst, int dstBegin)  Значення, що повертається, немає. Копіює частину рядка, починаючи з символу у позиції srcBegin і закінчуючи символом у позиції dstBegin + (srcEnd-srcBegin)-1 у символьний масив dst, починаючи з позиції dstBegin.   2.3.4. Модифікація рядків Створення нових рядків на основі існуючих рядків виконується за допомогою методів, приведених в таблиці: Метод Значення, що повертається  String concat(String str) Початковий рядок, в кінець якого доданий рядок str.  String toLowerCase() Початковий рядок, переведений в нижній регістр.  String toUpperCase() Початковий рядок, переведений у верхній регістр.  String trim() Початковий рядок, з якого виключені початкові і кінцеві пробільні символів.  String replace(char oldChar, char newChar) Початковий рядок, в якому всі символи oldChar замінені на newChar.   Для створення рядків з примітивних типів даних в класі String використовуються переобтяжені статичні public-методи valueOf(), як аргумент яких задається константа, змінна або вираз примітивного типа (boolean, char, int, long, float, або double). Що повертається значення методу є рядок класу String - рядкове представлення аргументу. Крім того, визначені ще дві версії методів valueOf(): static String valueOf(char[] data) - повертає рядкове представлення символьного масиву data; static String valueOf(char[] data, int offset, int count) - повертає рядкове представлення символьного масиву data, починаючи з позиції offset і розміром count. 2.4.СТРУКТУРА ПРОГРАМІ JAVA І ПРОСТІЙ ВВІД-ВИВІД Якщо програма є додатком, вона повинна містити у файлі оголошення класу, ім'я якого співпадає з ім'ям файлу програми, статичний, і такий що не повертає значення, public-метод з ім'ям main: public final static void main(String args[]) { методу тіла } Цей метод запускається першим при виконанні програми. У масиві рядкових змінних args в програму передаються параметри, задані при запуску програми (перший параметр - в нульовому елементі масиву, другий в першому і т.д.). Опис масиву в параметрах методу main є обов'язковим, навіть якщо параметри не обробляються в програмі. Параметри, що задаються в командному рядку, можна використовувати для введення даних в програму. Параметри, що вводяться, відділяються один від одного, принаймні, одним пропуском. Якщо параметри, що вводяться , містять пропуски, то параметри полягають в подвійні апострофи (") (ці апострофи не передаються програмі Java). Якщо в параметрі, поміщеному в подвійні апострофи, необхідно задати символ подвійного апострофа, то усередині параметра він записується як (\"). Якщо як параметр задається символ зірочки (*), то програмі передаються імена файлів поточного каталога (кожне ім'я як окремий параметр). Якщо необхідно передати зірочку як значення параметра, її необхідно також укласти в подвійні апострофи. Для виведення результатів виконання програми і діагностичних повідомлень на дисплей в класі System пакету java.lang описані два потокові об'єкти класу PrintStream: public static final PrintStream out і public static final PrintStream err Оскільки це статичні об'єкти, їх можна використовувати в програмах, не створюючи власних потокових об'єктів, і в той же час їм доступні методи класу для виведення даних (звичайно використовуються методи print() і println()). При виклику методів print() і println() може бути заданий аргумент типу String, char char[], int, long, float, double, boolean і Object. Єдина відмінність між методами print() і println() полягає в тому, що останній завжди додає символ перекладу рядка до всього, що друкує, а перший залишається на тому ж рядку. Якщо потрібно перейти на новий рядок, можна викликати println() без параметрів. Виконання програми закінчується, коли виконаний останній оператор програми або якщо в програмі відбулася помилка (в цьому випадку об'єкт System.err виводить на дисплей діагностичні повідомлення). Виконання програми можна також завершити за допомогою наступного методу класу System: public static void exit(int status) Параметр status задає значення коду завершення програми. За умовчанням програма закінчується з нульовим кодом завершення. Можна вказати ненульовий код завершення, який може бути проаналізований операційною системою або командним файлом. Індивідуальне завдання Варіант 15 Аналіз параметрів, що задаються при введенні програми. Програма сортує введені параметри по першому символу параметра (без урахування регістра), який повинен бути латинською буквою. Програма виводить кількість заданих параметрів, відсортовані елементи і, окремо, список елементів, які не можна відсортувати. Сортування параметрів проводиться в окремому методі. Код програми import java.io.*; public class lab2 { public static void sort(String str[], int N) { for(int i=0;i<N;i++) for(int j=0;j<N-1;j++) if(str[j].charAt(0)>str[j+1].charAt(0)) { String tmp=str[j]; str[j]=str[j+1]; str[j+1]=tmp; } } public final static void main(String args[]) throws IOException { BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in)); int N; if(args.length==0) { System.out.println("Параметри не введені! Спробуйте ще раз:"); System.out.print("Кількість параметрів = "); N = Integer.parseInt(keyboard.readLine()); args=new String[N]; for(int i=0;i<N;i++) { System.out.print("Параметр "+i+" = "); args[i]=keyboard.readLine(); } } else N=args.length; System.out.println("Параметри введені"); System.out.println("Кількість параметрів = "+N); sort(args,N); for(int i=0;i<N;i++)System.out.println(args[i]); } } Результати виконання  Висновки На цій лабораторній роботі я отримав навики програмування з використанням стрічок мови Java.
Антиботан аватар за замовчуванням

31.03.2013 00:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!