Презентация по Программированию. Книга Программирование на Java для начинающих
Скачать 4.47 Mb.
|
4 Работа с данными Работа с данными В данной главе описывается, В данной главе описывается, каким образом работать каким образом работать со значениями данных, со значениями данных, используя различные используя различные программные конструкции программные конструкции языка Java. языка Java. • Преобразование типов • Преобразование типов • Создание массивов переменных • Создание массивов переменных • Передача аргументов • Передача аргументов • Передача множественных аргументов • Передача множественных аргументов • Обход элементов в цикле • Обход элементов в цикле • Изменение значений элемента • Изменение значений элемента • Добавление размеров массива • Добавление размеров массива • Перехват исключений • Перехват исключений • Заключение • Заключение 4. Р а бо т а с данными 64 Преобразование типов В программировании на Java при работе со значениями следует вни- мательно учитывать типы данных во избежание ошибок компиляции . Например, если методу , который требует значение типа int, передать переменную типа float, то это приведет к ошибке компилятора . Это означает, что зачастую для того, чтобы обрабатывать данные, их нужно конвертировать из одного типа в другой. Числовые значения можно легко преобразовывать (приводить) из одного числового типа данных в другой, используя синтаксис: ( тип-данных ) значение Необходимо понимать, что при приведении типов данных может про- исходить некоторая потеря точности. Так случается, например, при преобразовании числа с плавающей точкой (float) в целое число (int), поскольку значение после десятичной точки будет отбрасываться. На- пример, приведение значения 9.9 к целочисленному типу выдаст в ре- зультате значение 9. Значения символьного типа данных (char) могут быть автоматически использованы в качестве значений целочисленного типа (int), потому что каждый из них имеет уникальное целочисленное представление, а именно числовой код ASCII , поддерживаемый компилятором Java. Например, латинская буква A имеет числовой код 65. Числовые значения могут быть преобразованы к строковому типу (String) при помощи метода toString(). Он в качестве аргумента в сво- их скобках принимает числовое значение. Например, преобразование целочисленной переменной num к строковому типу имеет вид Integer. toString(num) . Аналогично преобразование переменной плавающего типа num в строковую будет иметь вид Float.toString(num). На самом деле такие преобразования не всегда требуются, поскольку, например, объединение двух переменных в строку, если одна из них имеет стро- ковый тип, происходит автоматически. С большей вероятностью вам будет нужно преобразовывать величи- ны строкового типа в числа, чтобы потом использовать их в арифме- тических вычислениях. Значение строкового типа может быть преоб- разовано в целочисленное при помощи метода Integer.parseInt(). Данный метод принимает строковую переменную в качестве аргумента в своих скобках. Например, преобразование строковой переменной msg в целое число будет иметь вид Integer.parseInt(msg). Аналогично для переменной с плавающей точкой — Float.parseFloat(msg). При преобразовании строковой величины в числовой тип данных строка должна содержать действительное числовое значение, иначе компиля- тор сообщит об ошибке. На заметку Все числовые классы имеют метод parse... и toString, позволяющие преобразовы- вать строковые и числовые значения. 65 1. Создайте новую программу с именем Convert, содержащую стан- дартный метод main. class Convert { public static void main ( String[] args ) { } } 2. Внутри главного метода объявите и проинициализируйте одну строковую переменную и одну переменную с плавающей точкой. float daysFloat = 365.25f ; String weeksString = "52" ; 3. Преобразуйте переменную с плавающей точкой в целочисленную. int daysInt = (int) daysFloat ; 4. Преобразуйте строковую переменную в целочисленную. int weeksInt = Integer.parseInt( weeksString ) ; 5. Произведите арифметические действия над преобразованными значениями и выведите результат. int week = ( daysInt / weeksInt ) ; System.out.println( "Дней в неделе: " + week ) ; 6. Сохраните программу под именем Convert.java, затем скомпили- руйте и запустите. JAVA Convert.java 4. Р а бо т а с данными 66 Создание массивов переменных Массив — это простая переменная, которая может содержать несколь- ко значений, в отличие от обычной переменной, содержащей един- ственное значение. Объявление массива включает в себя тип данных с использованием клю- чевых слов, обозначающих типы данных, после которого следуют ква- дратные скобки, обозначающие, что это будет массив. Затем в объявле- нии стоит имя массива в соответствии с договоренностями именования. Массив можно проинициализировать при объявлении, присвоив зна- чение соответствующего типа данных, записанное в фигурные скобки и разделенное запятыми. Например, объявление целочисленного мас- сива, проинициализированного тремя значениями, может выглядеть следующим образом: int[ ] numbersArray = { 1, 2, 3 } ; При этом создается массив длиной, равной количеству элементов, ука- занных в списке . В данном случае массив состоит из трех элементов . Значения элементов сохраняются в массиве под порядковыми номера- ми (индексами ), по которым можно обратиться к этим элементам. Для обращения к элементам следует написать имя массива и соответствую- щий индекс элемента в квадратных скобках. Элементы индексируются, начиная с нуля. Например, чтобы обратиться к первому элементу из массива, указанного выше, мы запишем numbersArray[0]. Несмотря на то, что значения, хранящиеся в каждом элементе массива, могут быть изменены так же, как обычная переменная, размер массива определяется при объявлении и не может быть изменен впоследствии. Общее число элементов в массиве можно узнать, если обратиться к свой- ству массива length. Для этого нужно записать через точечную запись «имя массива.length». Например, numbersArray.length возвратит раз- мер массива, приведенного выше, в данном случае целое число 3. Массивы могут быть объявлены также и без присвоения начальных значений элементам. Это можно сделать при помощи ключевого слова new , создавая пустой «объект» массива указанного размера. Число тре- буемых элементов указывается в присваивании внутри квадратных ско- бок после типа данных. Например, объявление пустого целочисленного массива с тремя элементами может выглядеть следующим об разом: int[ ] numbersArray = new int[3] ; Во время создания пустого массива элементам присваиваются значе- ния в зависимости от типов данных: для типов int и float — 0, для Внимание Не забывайте, что массив ин- дексируется, начиная с нуля. Это означает, что index[2] обращается к третьему элементу массива, а не ко второму. 67 типа String — значение null, для типа char — \0, а для типа boolean — значение false. 1. Создайте новую программу с именем Array, содержащую стандарт- ный метод main. class Array { public static void main ( String[] args ) { } } 2. Внутри главного метода объявите и проинициализируйте строко- вый массив из трех элементов. String[] str = { "Java ", "Хороший", " Язык" } ; 3. Объявите пустой целочисленный массив с тремя элементами. int[] num = new int[3] ; 4. Присвойте значения первым двум элементам целочисленного мас- сива. num[0] = 100 ; num[1] = 200 ; 5. Присвойте новые значения второму элементу строкового массива. str[1] = "Лучший" ; 6. Выведите длину каждого массива и содержимое всех элементов. System.out.println( "Размер строкового массива " + str.length ); System.out.println( "Размер целочисленного массива "+ num.length); System.out.println( num[0] + "," +num[1]+ ","+num[2] ) ; System.out.println( str[0] + str[1] + str[2] ) ; 7. Сохраните программу под именем Array.java, затем скомпилируйте и запустите. JAVA Array.java На заметку Строковые переменные должны быть заключены в кавычки. 4. Р а бо т а с данными 68 Передача аргументов Код на Java, объявляющий стандартный метод main, включает внутри своих скобок аргумент, который создает строковый массив с именем args : public static void main( String[] args ) { } Основное назначение массива args[] — передавать значения (аргу- менты) в программу при ее вызове. Значения, которые нужно передать в программу, добавляются в командную строку при вызове программы после ее имени. Например, команда, которая передаст строку Java ко- манде с именем Run, будет выглядеть так: Run Java. Одно значение, переданное в программу, автоматически помещается в первый элемент массива args[]. Тем самым, к нему можно обратить- ся в виде args[0]. Важно знать, что массив args[] содержит строковый тип данных, поэтому любое числовое значение, переданное в программу, будет со- храняться как строковое представление этого числа. Это означает, что программа не сможет использовать данное значение в арифметической операции до тех пор, пока его не преобразовать к числовому типу дан- ных, например int. Например, Run 4 передает число 4 в программу, которая сохраняется как строковое значение "4", а не как целочис- ленное 4. Следовательно, результат выполнения выражения args[0]+3 выдаст объединенную строку "43", а не сумму 7. Но с помощью пре- образования, используя метод Integer.parseInt(), можно получить требуемый результат, если вам нужна сумма. Строку, содержащую пробелы, можно передавать в программу как одно строковое значение, заключив всю эту строку в двойные кавычки. Например, Run "Java In Easy Steps". Передача аргументов в программу может, например, использоваться для того, чтобы указывать опции запуска конкретной программы. Оп- ция передается в программу в виде строкового значения args[0] и мо- жет быть впоследствии оценена с помощью метода String.equals(). Например, args[0].equals("b") сравнивает аргумент со строковым значением "b". 69 1. Создайте новую программу с именем Option, содержащую стан- дартный метод main. class Option { public static void main ( String[] args ) { } } 2. Внутри главного метода напишите оператор if, в котором произ- ведите поиск аргумента с именем "-en". if ( args[0].equals( "-en" ) ) { System.out.println( "Опция для Английского языка" ) ; } 3. Добавьте альтернативную ветку else к оператору if для поиска ар- гумента "-es". else if ( args[0].equals( "-es" ) ) { System.out.println( "Опция для Испанского языка" ) ; } 4. Добавьте еще одну альтернативную ветку else для вывода ответа по умолчанию. else System.out.println( "Неизвестная опция" ) ; 5. Сохраните программу под именем Option.java, затем скомпилируй- те и запустите. JAVA Option.java 4. Р а бо т а с данными 70 Передача множественных аргументов С помощью командной строки в программу можно передать несколько аргументов, которые следуют после имени программы и пробела. Ар- гументы должны отделяться, по крайней мере, одним пробелом, а их значения помещаются в элементы массива args[]. После этого к каж- дому из значений можно обращаться по индексу, равно как и к любому другому элементу массива, — args[0] для первого аргумента, args[1] для второго аргумента и так далее. Чтобы убедиться, что пользователь ввел необходимое количество аргу- ментов, программе нужно проверить свойство length массива args[]. Если проверка не дала необходимого результата, можно использовать ключевое слово return для выхода из главного метода, тем самым про- изведя выход из программы. 1. Создайте новую программу с именем Args, содержащую стандарт- ный метод main. class Args { public static void main ( String[] args ) { } } 2. Внутри главного метода введите условный оператор if для провер- ки количества введенных аргументов и вывода соответствующего сообщения, а также выхода из программы в случае, если количе- ство аргументов не соответствует требуемому — в данном случае трем. if ( args.length != 3 ) { System.out.println( "Неверное число аргументов" ) ; return ; } 3. После оператора if создайте две целочисленные переменные и про- инициализируйте их значениями первого и третьего аргументов соответственно. int num1 = Integer.parseInt( args[0] ) ; int num2 = Integer.parseInt( args[2] ) ; JAVA Args.java 71 4. Добавьте строковую переменную, проинициализировав ее значе- нием объединения всех трех аргументов. String msg = args[0] + args[1] + args[2] + "=" ; 5. Добавьте оператор if else , выполняющий арифметические дей- ствия над аргументами и объединяющий результат в переменной строкового типа. if ( args[1].equals("+") ) msg += (num1 + num2); else if ( args[1].equals("-") ) msg += (num1 - num2); else if ( args[1].equals("x") ) msg += (num1 * num2); else if ( args[1].equals("/") ) msg += (num1 / num2); else msg = "Неправильный оператор" ; 6. Добавьте следующую строку в конец главного метода для вывода получившейся строки. System.out.println( msg ) ; 7. Сохраните программу под именем Args.java, затем скомпилируйте и запустите с тремя аргументами — целым числом, любым сим- волом арифметической операции (+, -, х и /) и еще одним целым числом . 8. Перезапустите программу с некорректным вторым аргументом и с неверным числом аргументов. Совет Ключевое слово return ис- пользуется для выхода из текущего метода. Оно также может возвращать значение в точку, где метод был вы- зван (см. главу 6). Совет Программа сообщит об ошибке, если введены не числовые значения. Подроб- нее об обработке ошибок см. в конце этой главы. 4. Р а бо т а с данными 72 Обход элементов в цикле Для того чтобы прочитать все значения, хранящиеся в элементах мас- сива, можно использовать любые типы циклов . Счетчик цикла должен начинаться с индекса первого элемента массива и возрастать до индекса последнего элемента. Заметьте, что индекс последнего элемента в мас- сиве всегда будет на единицу меньше, чем длина массива, поскольку индексы начинаются с нуля. Весьма полезным считается использованием свойства массива length (длина) для условной проверки, определяющей, когда цикл должен за- вершить свою работу. Это значит, что цикл будет продолжаться до тех пор, пока счетчик не превысит значение индекса последнего элемента. 1. Создайте новую программу с именем Loops, содержащую стандарт- ный метод main. class Loops { public static void main ( String[] args ) { } } 2. Внутри главного метода напишите условный оператор, выполняю- щий проверку того, введены ли какие-либо аргументы из команд- ной строки в массив args[]. if ( args.length > 0 ) { } 3. Добавьте внутри фигурных скобок условного оператора цикл for для вывода значений, хранящихся в каждом элементе. for ( int i = 0 ; i < args.length ; i++ ) { System.out.println( "args[" +i+ "] - | "+ args[i] ) ; } 4. Сохраните программу под именем Loops.java, затем скомпилируй- те и запустите с аргументами Java In Easy Steps. JAVA Loops.java 73 5. Отредактируйте файл Loops.java, добавив строковый массив, а также цикл while для вывода значений, хранящихся в каждом элементе . String[] htm = { "HTML5", "in", "easy", "steps" } ; int j = 0 ; while ( j < htm.length ) { System.out.println( "htm[" +j+ "] - | " + htm[j] ) ; j++ ; } 6. Сохраните изменения, затем заново скомпилируйте и запустите программу. 7. Отредактируйте файл Loops.java, добавив еще один строковый массив, а также цикл do while для вывода значений, хранящихся в каждом элементе. String[] xml = { "XML", "in", "easy", "steps" } ; int k = 0 ; if ( xml.length > 0 ) do { System.out.println( "\t\txml["+k+"] - | "+xml[k] ) ; k++ ; } while ( k < xml.length ) ; 8. Сохраните изменения, затем заново скомпилируйте и запустите программу. |