Главная страница

Презентация по Программированию. Книга Программирование на Java для начинающих


Скачать 4.47 Mb.
НазваниеКнига Программирование на Java для начинающих
АнкорПрезентация по Программированию
Дата03.02.2022
Размер4.47 Mb.
Формат файлаpdf
Имя файла638767.pdf
ТипКнига
#350143
страница9 из 18
1   ...   5   6   7   8   9   10   11   12   ...   18
JAVA
Pi.java
Совет
Вычисленное значение π обычно имеет достаточную точность.

85
Метод Math.sqrt() возвращает квадратный корень числа, указыва- емый в качестве единственного аргумента.
Оба этих метода возвращают значение типа double.
1. Создайте новую программу с именем Power, содержащую стандарт- ный метод main.
class
Power
{
public static void main ( String[] args ) { }
}
2. Внутри главного метода объявите и проинициализируйте целочис- ленную переменную, используя аргумент командной строки.
int num = Integer.parseInt( args[0] ) ;
3. Произведите математические вычисления, приведя результаты к целочисленному типу.
int square = (int) Math.pow( num , 2 ) ;
int cube = (int) Math.pow( num , 3 ) ;
int sqrt = (int) Math.sqrt( num ) ;
4. Выведите результаты вычислений.
System.out.println( num + " в квадрате равно " + square ) ;
System.out.println( num + " в кубе равно " + cube ) ; System.
out.println( "Квадратный корень из " + num + " равен "+ sqrt ) ;
5. Сохраните программу под именем Power.java, затем скомпилируйте и запустите.
JAVA
Power.java
На заметку
Оба этих примера можно улучшить, если добавить блок операторов try catch, чтобы отловить пользо- вательские ошибки, — см. главу 4.

5. Р
а
бо
т
а
с данными
86
Округление чисел
Класс Math внутри пакета java.lang предлагает три метода для окру- гления чисел с плавающей точкой до ближайшего целого. Простейший из методов Math.round() округляет число, являющееся его аргументом, вверх или вниз до ближайшего целого.
Метод Math.floor() производит округление до ближайшего целого вниз, а метод Math.ceil() округляет до ближайшего целого вверх.
В то время как метод Math.round() возвращает значение целочислен- ного типа (int), методы Math.floor() и Math.ceil() возвращают зна- чение типа double.
1. Создайте новую программу с именем Round, содержащую стандарт- ный метод main.
class
Round
{
public static void main ( String[] args ) { }
}
2. Внутри главного метода объявите и проинициализируйте пере- менную типа float.
float num = 7.25f ;
3. Выведите округленное значение, которое приобрело тип int в ре- зультате округления.
System.out.println(
num+" округленное равно "+Math.round( num ) );
4. Выведите округленное значение в виде значений типа double.
System.out.println(
num+" округленное вниз равно " +Math.floor( num ) );
System.out.println(
num+" округленное вверх равно " + Math.ceil( num ) ) ;
5. Сохраните программу под именем Round.java, затем скомпилируй- те и запустите.
JAVA
Round.java
Совет
По умолчанию метод Math.
round() будет округлять в сторону увеличения — та- ким образом, 7,5 округлит- ся до 8.

87
Класс Math пакета java.lang предлагает два метода для сравнения двух числовых значений — это методы Math.max() и Math.min(), принимаю- щие в качестве двух своих аргументов числа. Math.max() возвращает большее из двух чисел, а Math.min() — меньшее из них.
Сравниваемые числа, используемые этими двумя методами, могут иметь любой из числовых типов данных, но возвращаемый результат будет всегда иметь тип double.
1. Создайте новую программу с именем Compare, содержащую стан- дартный метод main.
class
Compare
{
public static void main ( String[] args ) { }
}
2. Внутри главного метода объявите и проинициализируйте две пере- менных типа float и типа int.
float num1 = 24.75f ;
int num2 = 25 ;
3. Выведите большее из двух значений.
System.out.println(
"Наибольшее: " + Math.max( num1, num2 ) ) ;
4. Выведите меньшее из двух значений.
System.out.println(
"Наименьшее: " + Math.min( num1, num2 ) ) ;
5. Сохраните программу под именем Compare.java, затем скомпили- руйте и запустите.
JAVA
Compare.java

5. Р
а
бо
т
а
с данными
88
Генерация случайных
чисел
Класс Math пакета java.lang предоставляет возможность для генера- ции случайных чисел при помощи метода Math.random(), который воз- вращает случайное число двойной точности (типа double) в диапазоне от 0,0 до 0,999. Желаемый диапазон можно расширить при помощи умножения на случайное число. Например, умножив на 10, можно соз- дать случайное число от 0,0 до 9,999. После этого, если округлить по- лученное число при помощи метода Math.ceil(), то полученное целое число попадает в диапазон от 1 до 10.
1. Создайте новую программу с именем Random, содержащую стан- дартный метод main.
class
Random
{
public static void main ( String[] args ) { }
}
2. Внутри главного метода присвойте переменной типа float значе- ние случайного числа и выведите это значение.
float random = (float) Math.random() ;
System.out.println( "Случайное число: " + random ) ;
3. Второй переменной типа float присвойте значение случайного числа, умноженное на 10, и также выведите ее значение.
float multiplied = random * 10 ;
System.out.println( "Умноженное на 10: " + multiplied ) ;
4. Теперь занесите округленное целое значение, полученное в преды- дущем шаге случайного числа, в переменную типа int, затем вы- ведите ее значение.
int randomInt = (int) Math.ceil( multiplied ) ;
System.out.println( "Случайное целое: " + randomInt ) ;
5. Сохраните программу под именем Random.java, затем скомпили- руйте и запустите.
JAVA
Random.java
Совет
Программа, моделирующая лотерею и описанная далее, комбинирует все эти три шага в одном операторе.

89
При помощи метода Math.random() можно сгенерировать последова- тельность из шести неповторяющихся целых чисел в диапазоне от 1 до 49 включительно, чтобы смоделировать выпадение номеров в ло- терее.
1. Создайте новую программу с именем Lottery, содержащую стан- дартный метод main.
class
Lottery
{
public static void main ( String[] args ) { }
}
2. Внутри главного метода создайте целочисленный массив из
50 элемен тов, а затем заполните элементы с 1 по 49 целыми числа- ми от 1 до 49.
int[] nums = new int[50] ;
for( int i = 1 ; i < 50 ; i++ ) { nums[i] = i ; }
3. Перемешайте значения в элементах массива от 1 до 49.
for( int i = 1 ; i < 50 ; i++ )
{
int r = (int) Math.ceil( Math.random() * 49 ) ;
int temp = nums[i] ;
nums[i] = nums[r] ;
nums[r] = temp ;
}
4. Выведите только те значения, которые содержатся в элементах от 1 до 6.
for ( int i = 1 ; i < 7 ; i++ )
{
System.out.print( Integer.toString( nums[i]) + " " );
}
5. Сохраните программу под именем Lottery.java, затем скомпилируй- те и запустите три раза, чтобы произвести три различных последо- вательности чисел.
JAVA
Lottery.java
Совет
К данной программе мы вер- немся при изучении графи- ческого пользовательского интерфейса в главе 10.

5. Р
а
бо
т
а
с данными
90
Управление строками
В языке Java строка (элемент типа String) представляет собой 0 или более символов, заключенных в кавычки. Корректными строками яв- ляются, например: String txt1 = "Моя первая строка" ;
String txt2 = "" ;
String txt3 = "2" ;
String txt4 = "null" ;
Пустые кавычки в примере с переменной txt2 инициализируют пере- менную, содержащую пустую строку. Числовое значение, присвоенное переменной txt3, — это строковое представление числа. Ключевое сло- во языка Java null обычно представляет собой отсутствие какого-либо значения, но оно является простым строковым литералом , если заклю- чено в кавычки.
Строка в языке Java, по существу, является набором символов, каждый из которых содержит собственные данные, подобно элементам масси- ва. Поэтому логично представлять строку как массив символов и, рабо- тая с ней, применять характеристики массива.
Класс String является частью базового пакета java.lang и предостав- ляет метод length(), который возвращает размер строки подобно свойству массива length. Каждая строковая переменная создается как экземпляр класса String, поэтому методы данного класса можно ис- пользовать, применив точечную запись к имени переменной. Напри- мер, чтобы получить размер строки, сохраненной в переменной txt, мы запишем txt.length().
В классе String пакета java.lang существует альтернатива оператору конкатенации + для объединения строковых значений друг с другом — это метод concat(), который требует единственного аргумента, опре- деляющего вторую строку, добавляемую к основной. Например, чтобы добавить строку txt1, хранящуюся в переменной txt2, к строке, храня- щейся в txt1, мы напишем txt1.concat( txt2 ).
Внимание
Array.length — это свой- ство, но String.length() — это метод, поэтому он содержит скобки.

91
1. Создайте новую программу с именем StringLength, содержащую стандартный метод main.
class
StringLength
{
public static void main ( String[] args ) { }
}
2. Внутри главного метода создайте и проинициализируйте две пере- менные строкового типа.
String lang = "Java" ;
String series = " in easy steps" ;
3. Добавьте еще одну строковую переменную и присвойте ей значе- ние двух объединенных выше созданных строк.
String title = lang.concat( series ) ;
4. Выведите объединенную строку, используя знаки кавычек, и ее размер.
System.out.print( "\"" + title + "\" содержит " ) ;
System.out.println( title.length() + " символов" ) ;
5. Сохраните программу под именем StringLength.java, затем скомпи- лируйте и запустите.
JAVA
StringLength.java
На заметку
Знаки кавычек не являют- ся частью строки, поэтому не включаются в подсчет символов, в отличие от про- белов.

5. Р
а
бо
т
а
с данными
92
Сравнение строк
Класс String пакета java.lang предоставляет полезный метод equals(), он был показан в главе 4, где оценивался аргумент командной строки, представленный аргументом args[0]. Данный метод также можно ис- пользовать для сравнения любых двух строковых переменных, исполь- зуя точечную запись — имя метода ставится после имени переменной, а вторая переменная является аргументом. Например, для сравнения переменных txt2 и txt1 запишем txt1.equals( txt2 ). В случае если обе переменные содержат одни и те же символы в одинаковом порядке, то метод возвращает значение true, в противном же случае возвращает значение false.
Строки, которые содержат одинаковые буквы, но в разных регистрах, не являются равными (например, Java и JAVA), поскольку у символов различаются коды ASCII. Например, значение символа верхнего реги- стра A равно 65, в то время как символ нижнего регистра a имеет зна- чение 97.
В программах очень часто используется сравнение введенной пользова- телем строки с нужной строкой, чтобы введенная строка соответство- вала определенному регистру. Для этих целей класс String предлагает два метода: toUpperCase() и toLowerCase(). Входная строка указыва- ется этим методам в качестве аргумента, а они, в свою очередь, воз- вращают трансформированную строку. Типичным примером может являться ситуация, когда введенный пользователем строковый пароль преобразуется к нижнему регистру, перед тем как будет сравниваться с верным паролем, хранящимся в программе в нижнем регистре. Это позволит пользователю вводить свой пароль не глядя на регистр, в том случае, если регистры, независимые от паролей, разрешены.
Точечная запись позволяет использовать методы друг за другом, выполняя операции последовательно. Это означает, что запись
toLowerCase().equals()
может быть использована для преобразова- ния строкового значения к нижнему регистру, а затем сравнения по- лученного результата с указанным аргументом.
1. Создайте новую программу с именем StringComparison, содержа- щую стандартный метод main.
class
StringComparison
{
public static void main ( String[] args ) { }
}
Внимание
Будьте внимательны при написании заглавных букв C в названии методов
toUpperCase и toLowerCase.

93
2. Внутри главного метода создайте и проинициализируйте строко- вую переменную, содержащую корректный пароль из символов нижнего регистра.
String password = "bingo" ;
3. Добавьте блок операторов try catch, для того чтобы перехватить исключение, которое возникнет в случае, если аргумент, представ- ляющий пароль, не будет введен.
try
{
}
catch( Exception e )
{
System.out.println( "Требуется ввод пароля." ) ;
}
4. Добавьте блок
if else
в фигурные скобки оператора try для оцен- ки введенного пользователем аргумента.
if ( args[0].toLowerCase().equals( password ) )
{
System.out.println( "Пароль подтвержден." ) ;
}
else
{
System.out.println( "Неверный пароль." ) ;
}
5. Сохраните программу под именем StringComparison.java, затем скомпилируйте и запустите.
JAVA
StringComparison.java

5. Р
а
бо
т
а
с данными
94
Поиск строк
Класс String пакета java.lang предлагает методы startsWith() и endsWith() для сравнения частей строк. Данные метода весьма по- лезны, например, при нахождении строк, имеющих одинаковое начало либо одинаковое окончание. Когда часть строки соответствует указан- ному аргументу, метод возвращает значение true, в противном случае возвращает значение false.
Существует возможность скопировать часть какой-то строки, указав позицию первого символа, с которого нужно начинать копировать, в качестве аргумента для метода substring(). Данный метод возвратит так называемую подстроку к оригинальной строке, начиная с указан- ной стартовой позиции и заканчивая последним символом первона- чальной строки.
Метод substring() может принимать необязательный второй аргу- мент, который будет указывать позицию последнего копируемого сим- вола. В этом случае метод возвратит подстроку первоначальной стро- ки, начиная с указанной стартовой позиции и заканчивая указанной конечной позицией.
Для поиска символа или подстроки в строке используется метод
indexOf()
. Данный метод возвращает числовую позицию первого вхождения указанного символа или подстроки внутри обрабатывае- мой строки. Если соответствие не найдено, то метод возвращает зна- чение -1.
1. Создайте новую программу с именем StringSearch, содержащую стандартный метод main.
class
StringSearch
{
public static void main ( String[] args ) { }
}
2. Внутри главного метода создайте и проинициализируйте строко- вый массив, содержащий названия книг.
String[] books =
{ "Java in easy steps", "XML in easy steps" ,
"HTML in easy steps" , "CSS in easy steps" ,
"Gone With the Wind" , "Drop the Defense" } ;
JAVA
StringSearch.java

95
3. Создайте и проинициализируйте три целочисленных переменных- счетчика.
int counter1 = 0 , counter2 = 0 , counter3 = 0 ;
4. Добавьте цикл
for
для обхода строкового массива, выводя первые четыре символа каждого названия.
for ( int i = 0 ; i < books.length ; i++ )
{
System.out.print( books[i].substring( 0,4 ) + " | " ) ;
}
5. Добавьте в блок цикла for оператор для подсчета названий, содер- жащих указанное окончание.
if ( books[i].endsWith( "in easy steps" ) ) counter1++ ;
6. Добавьте еще один оператор в блок цикла for для подсчета назва- ний, содержащих указанное начало.
if ( books[i].startsWith( "Java" ) ) counter2++ ;
7. Добавьте еще один оператор для подсчета названий, не содержа- щих указанную подстроку.
if ( books[i].indexOf( "easy" ) == -1 ) counter3++ ;
8. В конец главного метода добавьте следующие операторы для выво- да результатов каждого поиска.
System.out.println(
"\nНайдено " + counter1 + " названий из этой серии" ) ;
System.out.println(
"Найдено " + counter2 + " названий с Java" ) ;
System.out.println(
"Найдено " + counter3 + " других названий" ) ;
9. Сохраните программу под именем StringSearch.java, затем скомпи- лируйте и запустите.
На заметку
Оператор ! NOT не может использоваться для провер- ки того, что метод indexOf() выдал ошибку, поскольку он возвращает не логическое значение, а целое.

5. Р
а
бо
1   ...   5   6   7   8   9   10   11   12   ...   18


написать администратору сайта