it_vse (519823), страница 55
Текст из файла (страница 55)
ниже). Переносить часть строки на новую строчку нельзя. В тексте строки нельзяиспользовать двойные или одинарные кавычки и косую черту "\". Если же необходимо этими символамивсе-таки воспользоваться, то применяют управляющие текстовые и восьмеричные константы:Константа ЗначениеКонстанта Значение\nперевод строки\\\u005c обратная косая черта\fперевод формата\007\u0007 звонок\rвозврат каретки\101\u0041 буква"А"\"\u0022 двойная кавычка\071\u0039 цифра "9"\'\u0027 одиночная кавычкаПример:String primer = "На разных \n строках и \" в кавычках \" буква \110, со звонком \007"Строки – это объекты, поэтому сравнивать строки при помощи простой операции равенства нельзя, т.к. приэтом сравниваются не содержимое строк, а их объекты (которые будут разными, даже если содержимоестрок одинаково).
Для сравнения строк надо пользоваться специальными методами.Пример:String stroka1 = “Это строка”;// создание объекта stroka1String stroka2 = “Это строка”;// создание объекта stroka2if (stroka1==stroka2) {/* операторы */} // условие не выполнится, т.к. stroka1и stroka2 – это 2 разных объектаif ( stroka1.equals(stroka2) ) {/*операторы*/ } // а вот так сравнивать строки правильно (метод equals)boolean otvet = stroka.equalsIgnoreCase (stroka2); // сравнение без учета регистра.Для поиска слова в словаре можно воспользоваться методом compareTo ( ), который возвращает:0 - строки равны, число >0 – строка больше сравниваемой, число <0 – строка меньше сравниваемой.Пример:String slovo = “Сергей”;// создание объекта slovoint otvet1 = slovo.compareTo('Сам');// результат: otvet1>0int otvet2 = slovo.compareTo('Сеялка'); /* результат: otvet2<0 - значит слово "Сергей" находится по алфавитумежду словами "Сам " и "Сеялка".
*/Над строками можно выполнять и другие операции. Ниже приведены примеры некоторых функций дляработы со строками:String stroka = “Это строка”; // создание строки strokaboolean otvet = stroka.startsWith(‘Это’); /* переменная otvet будет true (истина), если строка начинается сослова “Это”, регистр учитывается */boolean otvet = stroka.endsWith(‘строка); /* переменная ответ будет true (истина), если строка кончаетсясловом “строка”, регистр учитывается */int otvet = stroka.indexOf('о'); // переменная otvet будет содержать номер позиции первой буквы "о" в строкеint otvet = stroka.indexOf('о',otvet+1); /* после того, как в предыдущем примере будет найдена первая буква"о", в этом примере поиск следующей буквы "о" в строке будетпродолжен, начиная со следующей после "o" позиции.
Так можнонайти все буквы "о", продолжая поиск до тех пор, пока otvet != 0*/ Ляхевич А.Г., 2000 - 2002 годint otvet = stroka.lastIndexOf('о'); // тоже самое, что и indexOf('о'), но поиск начинается с конца строкиint otvet = stroka.lastIndexOf('о', otvet-1 ); // аналогично примеру вышеint otvet = stroka.indexOf('Это'); /* можно определять позицию не только отдельного символа, но иподстроки */char bukva = stroka.charAt (3); /* в переменную bukva будет помещен 4-й символ строки (индекс первогосимвола строки = 0) */char massiv [ ] = new char [20]; // создается массив из 20-ти символовstroka.getChars(5,10,massiv, 2); /* строка с 6 по 11 символ, посимвольно помещается в массив, начиная с 3-ейпозиции в массиве.
Существует аналогичный метод getBytes ( ). */String stroka2 = new String ( massiv [ ], 3, 2); /* создается новая строка длиной 2 символа, значения для строкиберутся, начиная с 4-ой позиции в массиве */String stroka2 = stroka.subString(4); /* выделение подстроки из строки "stroka", начиная с 5-ой позиции и доконца строки */String stroka2 = stroka.subString(4 ); /* выделение подстроки из строки "stroka", начиная с 5-ой позиции и доконца строки */String stroka2 = stroka.subString(4, 9 ); /* выделение подстроки из строки "stroka", начиная с 5-ой изаканчивая 10-ой позицией строки */String stroka2 = stroka.replace('о', 'а'); // заменяет в строке все буквы "о" на букву "а"String stroka2 = stroka.toUpperCase( ); // преобразует строку в верхний регистрString stroka2 = stroka.toLowerCase( ); // преобразует строку в нижний регистрint chislo=10; String stroka = String.valueOf(chislo); // переводит практически любой тип данных в тип StringИспользование класса String Tokenizer (разбивка строк на слова):Иногда необходимо разбить введенную пользователем строку на отдельные слова (например, при анализезапроса к поисковой системе).
Для этого в пакете java.util определен специальный класс StringTokenizer,который разбивает строук на слова, ориентируясь на пробелы в качестве разделителей. Пример программы сиспользованием этого класса приведен ниже:class primer {import java.util.StringTokenizer;public static void main(String args[ ] ) {// Запуск программыString stroka = "Инструкция по пользованию мылом"; // Задаем строку для разборкиStringTokenizer razborka = new StringTokenizer (stroka); // Создаем объект "razborka", типа StringTokenizerSystem.out.println ("Число слов в строке = "+ razborka.countTokens( ) ); /* метод countTokens ( ) подсчитывает число слов в строке */System.out.println ("Строка содержит следующие слова: " );while (razborka.hasMoreTokens ( ) )// метод hasMoreTokens возвращает true, пока в строке есть словаSystem.out.println (razborka.nextToken ( ) ); // метод nextToken возвращает следующее слово в строке}8.11.
Блоки try .. catch .. finally, обработка исключений.При возникновении ошибки, в Java программе возбуждается исключение (exception). Ошибки можнообрабатывать при помощи конструкции try .. catch .. finally.Синтаксис:try { /* часть программы, где возможно возникновение ошибки */ }catch ( тип_исключения переменная ){ /* блок кода, выполняющийся при возникновении ошибки; */ }finally { /* блок кода, выполняющийся после блока try и блока catch, даже если ошибки не было */}Пример 1:try { /* часть программы, где возможно возникновение ошибки */ }catch ( NumberFormatException oshibka){ String text="Неверный формат числа :"+oshibka.toString; System.out.println(text); }catch ( ArithmeticException oshibka){ String text="Ошибка вычислений:"+oshibka.toString; System.out.println(text); }finally { System.out.println("Конец"); }Пример 2*:import java.io. IOExceptiontry { /* часть программы, где возможно возникновение ошибки */ }catch ( IOException oshibka){ System.out.println("Какая-то ошибка ввода-вывода"); }* Перехват различных типов ошибок определен в различных пакетах (классах), поэтому перед заданиемблока try ..
catch .. finally необходимо импортировать import соответствующий класс из соответствую- Ляхевич А.Г., 2000 - 2002 годщего пакета (см. пример 2). Однако часть исключений описана в пакете java.lang - их можно использоватьсразу, т.к. этот пакет уже "проимпортирован" для любой Java программы. Ляхевич А.Г., 2000 - 2002 годНекоторые типы исключений:ИсключениеПакетRuntimeExceptionSecurityExceptionjava.langjava.langOutOf MemoryExceptionStackOverflowExceptionArithmeticExceptionNumberFormatExceptionjava.langjava.langjava.langjava.langIndexOutOfBoundsExceptionjava.langArrayIndexOutOfBoundsException java.langStringlndexOutOfBoundsException java.langArrayStoreExceptionjava.langNullPointerExceptionNoSuchMethodExceptionIOExceptionjava.langjava.langjava.ioFileNotFoundExceptionEOFExceptionInterruptedIOExceptionAWTExceptionMalformedURLExceptionProtocolExceptionSocketExceptionUnknownHostExceptionUnknownServiceExceptionjava.iojava.iojava.iojava.awtjava.netjava.netjava.netjava.netjava.netПричина возникновенияОшибка времени выполнения.Апплет пытается выполнить действие, запрещенноережимом защиты, установленным в браузереНедостаток памяти при размещении нового объектаПереполнение стекаМатематические ошибки, например, деление на нольНеправильное преобразование между строками и числами.Неверный формат числаИндекс вышел за пределы структурыНеправильные индексы массиваПрограмма пыталась обратиться к несуществующейпозиции символа в строкеПрограмма пытается записать в массив неправильный типданныхСсылка на null-объектОбъект не имеет такого метода.Общие ошибки ввода/вывода, например, невозможностьчтения из файлаОбращение к несуществующему файлуДостигнут конец файлаВвод/вывод прерванОшибка оконного графического интерфейсаНеверно задан URL-адресОшибка протокола.Ошибка сокетаХост не найденСервис не найденПеременной oshibka, в приведенном выше примере, присваивается указатель на объект "исключение",который имеет следующие методы:getMessage () – возвращает строку, с подробной информацией об исключении.toString() – преобразует объект в строку, которую можно вывести на экран.printStackTrace () – отображает иерархию вызовов методов, приведших к исключению.9.