Презентация по Программированию. Книга Программирование на Java для начинающих
Скачать 4.47 Mb.
|
Совет Обратите внимание, что оператор do предваряется условной проверкой, чтобы перед тем, как попытаться вывести значение первого элемента, убедиться, что массив не пустой. 4. Р а бо т а с данными 74 Изменение значений элемента Значение любого элемента массива можно изменить, присвоив новое значение конкретному элементу, используя его индекс. К тому же, для того чтобы эффективно разместить элементы, хранящиеся в другом массиве, можно использовать любой тип цикла. Особенно это полезно при комбинировании данных из множественных массивов в один мас- сив объединенных данных. 1. Создайте новую программу с именем Elements, содержащую стан- дартный метод main. class Elements { public static void main ( String[] args ) { } } 2. Добавьте в главный метод проинициализированный целочислен- ный массив, представляющий собой ежемесячные объемы продаж киоска по кварталам года. int[] kiosk_q1 = { 42000 , 48000 , 50000 } ; int[] kiosk_q2 = { 52000 , 58000 , 60000 } ; int[] kiosk_q3 = { 46000 , 49000 , 58000 } ; int[] kiosk_q4 = { 50000 , 51000 , 61000 } ; 3. Добавьте проинициализированные целочисленные массивы, пред- ставляющие собой ежемесячные продажи за четыре квартала года. int[] outlet_q1 = { 57000 , 63000 , 60000 } ; int[] outlet_q2 = { 70000 , 67000 , 73000 } ; int[] outlet_q3 = { 67000 , 65000 , 62000 } ; int[] outlet_q4 = { 72000 , 69000 , 75000 } ; 4. Теперь создайте пустой целочисленный массив из 12 элементов, в котором будут объединены все ежемесячные продажи, а также создайте целочисленную переменную, в которой будет записана общая величина объема продаж. int[] sum = new int[ 12 ] ; int total = 0 ; JAVA Elements.java 75 5. Добавьте цикл for , для того чтобы занести в каждый элемент пу- стого массива объединенное значение из других массивов. for ( int i = 0 ; i < kiosk_q1.length ; i++ ) { sum[ i ] = kiosk_q1[i] + outlet_q1[i] ; sum[i+3] = kiosk_q2[i] + outlet_q2[i] ; sum[i+6] = kiosk_q3[i] + outlet_q3[i] ; sum[i+9] = kiosk_q4[i] + outlet_q4[i] ; } 6. Теперь добавьте еще один цикл for для вывода каждого из объеди- ненных ежемесячных объемов продаж, а также вычисления общей суммы. for ( int i = 0 ; i < sum.length ; i++ ) { System.out.println( "Месяц "+ ( i+1 ) + " объем продаж:\t" + sum[i] ) ; total += sum[i] ; } 7. Добавьте последний оператор в конец главного метода для вывода общей суммы (годового объема). System.out.println( "ОБЩИЙ ОБЪЕМ ПРОДАЖ ЗА ГОД\t" + total ); 8. Сохраните программу под именем Elements.java, затем скомпили- руйте и запустите. На заметку Счетчик увеличивается на единицу для того, чтобы произвести числа месяца от 1 до 12. 4. Р а бо т а с данными 76 Добавление размеров массива В массивах можно хранить множественные наборы элементов, при- чем каждый из таких наборов станет иметь собственную размерность. К отдельным значениям можно будет обращаться с помощью много- мерного массива, используя соответствующие индексы для каждой размерности, например num [1] [3]. Например, чтобы организовать бизнес-ежедневник с записями для каж- дого дня, потребуется массив из 52 элементов (один на неделю), каждый из которых содержит еще один массив из семи элементов (для каждого дня). Объявление такого массива будет выглядеть следующим образом: int[][] dailyRecord = new int [52] [7] ; Такой массив массивов обеспечивает элемент для каждого рабочего дня. Значения для каждого дня заносятся в многомерный массив с ука- занием соответствующего индекса для каждого размера. Например, чтобы задать значение для первого дня шестой недели, мы запишем: dailyRecord [5] [0] = 5000 ; Каждый массив содержит собственное свойство длины (length), к кото- рому можно обратиться, указав требуемую размерность. Например, для вышеуказанного массива выражение dailyRecord.length возвратит значение 52 — размер первого измерения. Чтобы найти размер второго измерения, выражение dailyRecord[0].length возвратит значение 7. Двухмерные массивы часто используются для хранения координат, где первая размерность представляет координату по оси X, а вторая коор- дината — по оси Y, например point[3][5]. Трехмерные массивы могут использоваться для хранения коорди- нат XYZ аналогичным способом, но, конечно, запись point[4][8][2] сложнее для восприятия. При организации многомерных массивов очень удобно пользоваться вложенными циклами — каждый уровень цикла может обращаться к элементам соответствующей размерности. 1. Создайте новую программу с именем Dimensions, содержащую стандартный метод main. class Dimensions { public static void main ( String[] args ) { } } Внимание Старайтесь избегать размер- ности больше, чем три, — это может вас запутать. JAVA Dimensions.java 77 2. В главном методе создайте двухмерный массив для хранения коор- динаты XY. boolean[][] points = new boolean[5][20] ; 3. Определите одну точку Y на каждой оси X. points[0][5] = true ; points[1][6] = true ; points[2][7] = true ; points[3][8] = true ; points[4][9] = true ; 4. Для прохода по первому индексу массива добавьте цикл for, встав- ляя на каждой итерации символ новой строки. for ( int i = 0 ; i < points.length ; i++ ) { System.out.print( "\n" ) ; } 5. Внутри фигурных скобок цикла for добавьте еще один цикл for для итерации по второму индексу массива. for ( int j = 0 ; j < points[0].length ; j++ ) { } 6. Внутри фигурных скобок второго цикла for добавьте выраже- ние для вывода символов в соответствии с логическим значением элемента . char mark = ( points[i][j] ) ? 'X' : '-' ; System.out.print( mark ) ; 7. Сохраните программу под именем Dimensions.java, затем скомпи- лируйте и запустите. На заметку Логические переменные имеют по умолчанию значе- ние false. 4. Р а бо т а с данными 78 Перехват исключений В программах на этапе выполнения могут возникать проблемы, при- водящие к ошибкам (исключениям ), которые, в свою очередь, вызы- вают остановку выполнения программы. Очень часто причиной таких исключений является некорректный пользовательский ввод. Следова- тельно, хорошо продуманная программа должна попытаться учесть все возможные варианты, при которых пользователь может вызвать исключение на этапе выполнения. Части кода, в которых возможно возникновение исключений, заключа- ются в специальные блоки операторов try catch. Такие блоки позво- ляют программе обрабатывать исключения, не приводя к остановкам, а выглядят они следующим образом: try { операторы, где может возникнуть исключение } catch( Exception e ) { операторы, обрабатывающие исключение } В скобках, следующих после ключевого слова catch, определяется класс исключения, которое нужно перехватить. Класс Exception является исключением верхнего уровня, он перехватывает все исключения. Ис- пользуя многочисленные операторы catch, можно перехватывать раз- личные классы исключений более низкого уровня. Наиболее распространенные исключения — это NumberFormat- Exception , которое возникает, когда программа находит значение не- корректного типа, а также ArrayIndexOutOfBoundsException, которое возникает при попытке обращения к элементу массива с индексом, выходящим за пределы разрешенного диапазона. Для каждого из этих исключений полезно создавать отдельный ответ для объяснения поль- зователю природы возникшей ошибки. Блок операторов try catch может быть расширен дополнительным необязательным блоком finally, содержащий код, который будет вы- полняться в любом случае, независимо от того, возникло исключение в программе или нет. Совет Метод e.getMessage() воз- вращает дополнительную информацию о перехвачен- ных исключениях. 79 1. Создайте новую программу с именем Exceptions, содержащую стандартный метод main. class Exceptions { public static void main ( String[] args ) { } } 2. Внутри главного метода напишите оператор try, в котором будет выводиться единственный целочисленный аргумент. try { int num = Integer.parseInt( args[0] ) ; System.out.println( "Вы ввели: "+ num ) ; } 3. Добавьте оператор catch , чтобы обработать исключение, кото- рое возникнет в том случае, если программа запускается без ар- гумента. catch( ArrayIndexOutOfBoundsException e ) { System.out.println( "Требуется целочисленный аргумент." ) ; } 4. Добавьте оператор catch для обработки исключения, которое воз- никнет в том случае, когда программа запускается с нечисловым аргументом. catch( NumberFormatException e ) { System.out.println( "Неверный формат аргумента." ) ; } 5. Добавьте оператор finally в конец программы. finally { System.out.println( "Программа завершила работу.");} 6. Сохраните программу под именем Exceptions.java, затем скомпили- руйте и запустите, пытаясь вызвать исключения. JAVA Exceptions.java 4. Р а бо т а с данными 80 Заключение • Любые числовые значения можно конвертировать в другие типы числовых данных с помощью приведения типов, а также к строко- вому типу, используя метод toString(). • Значение строкового типа может быть сконвертировано в цело- численное (int) с помощью метода Integer.parseInt(), а так- же в значение плавающего типа (float), используя метод Float. parseFloat() • Массив — это переменная, которая может содержать множествен- ные значения, которые инициализируются списком внутри фигур- ных скобок. • Пустой массив может быть создан при помощи ключевого сло- ва new. • Свойство массива length содержит целочисленную величину, рав- ную числу элементов этого массива. • К любому элементу массива можно обращаться по его индексу. • Главный метод программы создает строковый массив с именем args , в котором сохраняются аргументы командной строки. • Первый аргумент командной строки автоматически сохраняется в элементе args[0]. • Множественные аргументы, передаваемые в программу из команд- ной строки, должны быть разделены пробелом. • Циклы являются идеальным способом для того, чтобы прочитать значение, хранящееся в элементах массива. • Данные из нескольких массивов можно комбинировать и форми- ровать из них новый массив объединенных данных. • Многомерные массивы могут содержать множественные наборы значений элементов, каждый из которых имеет свою размерность. • Блок операторов try catch используется для обработки исключе- ний, возникающих на этапе исполнения. • Класс Exception перехватывает все исключения, включая NumberFormatException и ArrayIndexOutOfBoundsException. • Блок try catch может быть расширен оператором finally, содер- жащим код, который будет выполняться в любом случае. 5 5 Работа с данными Работа с данными В этой главе В этой главе демонстрируется, как демонстрируется, как управлять программными управлять программными данными, используя данными, используя различные методы из различные методы из библиотеки языка Java. библиотеки языка Java. • Изучение классов Java • Изучение классов Java • Математические вычисления • Математические вычисления • Округление чисел • Округление чисел • Генерация случайных чисел • Генерация случайных чисел • Управление строками • Управление строками • Сравнение строк • Сравнение строк • Поиск строк • Поиск строк • Обработка символов • Обработка символов • Заключение • Заключение 5. Р а бо т а с данными 82 Изучение классов Java Язык Java содержит обширную библиотеку протестированного кода, который размещен в так называемых пакетах («packages»). Основным пакетом языка Java является пакет java.lang, который по умолчанию имеет доступ к прикладному программному интерфейсу Java (Java API ). Это означает, что при создании программ всегда доступны свой- ства и методы, предоставляемые пакетом java.lang. Например, функ- циональность стандартного вывода, предоставляемая методом System. out.println() , на самом деле вызывает метод класса System, который является частью пакета java.lang. Содержимое пакета организовано в иерархическом порядке, который позволяет обращаться к любому его элементу, используя точечную за- пись . Например, класс System содержит свойство out (поле), которое, в свою очередь, включает метод println() — к нему можно обратиться как System.out.println(). Для того чтобы изучить подробнее классы в Java, можно обратиться к документации, которая предоставляет информацию о любом до- ступном элементе. Документация доступна во Всемирной паутине по адресу docs.oracle.com/javase/8/docs/api. Также вы можете ее скачать для офлайн-изучения. Объем документации достаточно большой, но познакомиться с ней все равно стоит. Для начала полезно ознакомить- ся со страницей API Overview (Обзор API-функций), которая содержит список всех пакетов с их кратким описанием. 1. Запустите веб-браузер и откройте страницу обзора API-функций по адресу docs.oracle.com/javase/8/docs/api. На заметку Вы можете щелкнуть мышью по ссылке Frames, чтобы просматривать докумен- тацию в мультиоконном режиме. 83 2. Просмотрите перечисленные в алфавитном порядке пакеты на вкладке Overview, затем пролистайте вниз, найдите пакет java. lang и щелкните по его ссылке. 3. Просмотрите перечисленные в алфавитном порядке классы в раз- деле Class Summary на соответствующей странице, прокрутите страницу вниз и, найдя класс Math, щелкните по его гиперссылке. 4. Просмотрите все методы данного класса, перечисленные в алфа- витном порядке в разделе Method Summary, затем щелкните на любой из гиперссылок, чтобы ознакомиться с синтаксисом кон- кретного метода и его назначением. 5. Щелкните на элементе Package в меню страницы, чтобы возвра- титься к странице пакета java.lang и изучить другие классы. Совет Изучите информацию, до- ступную по другим ссылкам в меню, чтобы ознакомиться с документацией ближе. 5. Р а бо т а с данными 84 Математические вычисления В пакете java.lang существует класс Math, который предоставляет две константы , используемые для математических вычислений. Первая из них — Math.PI — хранит значение числа Pi, а вторая — Math.E — хра- нит основание натурального логарифма. Обе константы имеют тип double (двойной точности, с 15 знаками после запятой). 1. Создайте новую программу с именем Pi, содержащую стандартный метод main. class Pi { public static void main ( String[] args ) { } } 2. Внутри главного метода объявите и проинициализируйте пере- менную типа float из аргумента командной строки, а также вто- рую переменную типа float, которую нужно получить с помощью приведения типов из константы Math.PI. float radius = Float.parseFloat( args[0] ) ; float shortPi = (float) Math.PI ; 3. Проведите математические вычисления, используя приведенные зна- чения и присваивая результаты еще двум переменным типа float. float circ = shortPi * ( radius + radius ) ; float area = shortPi * ( radius * radius ) ; 4. Выведите значение константы Math.PI, а также ее эквивалента, при- веденного к типу float, затем выведите результаты вычис лений. System.out.print( "Если число Пи рассчитано в диапазоне от " + Math.PI ) ; System.out.println( " до " + shortPi + "..." ) ; System.out.println( "Окружность с радиусом " + radius + " см"); System.out.print( "имеет длину " + circ + " см" ) ; System.out.println( " и площадь " + area + " кв.см" ) ; 5. Сохраните программу под именем Pi.java, затем скомпилируйте и запустите. Вышеуказанный класс Math предоставляет множество различных мето- дов, полезных для выполнения математических вычислений. Например, используя метод Math.pow(), можно любое заданное число возвести в ука- занную степень. Первым аргументом является число, заданное в скобках, а вторым — показатель степени, в которую нужно возвести. |