Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java / Java_Intro1_220509.pdf
Скачиваний:
251
Добавлен:
11.05.2015
Размер:
1.71 Mб
Скачать

16if (a==0){

17JOptionPane.showMessageDialog(null, "Корней нет");

18} else {

19if (d==0){

20

x1

= -b/(2*a);

21

x2

= x1;

22

JOptionPane.showMessageDialog(null, "Дискриминант

равен 0, x1 = x2 = "+x1);

23

} else{

24

x1

= (-b+Math.sqrt(d))/(2*a);

25

x2

= (-b-Math.sqrt(d))/(2*a);

26

JOptionPane.showMessageDialog(null, "x1 = "+x1+";\nx2

= "+x2);

 

27}

28}

29System.exit(0);

30}

31 }

32}В строке 4 объявляем переменные, где a,b,c предназначены для хранения коэффициентов уравнения, d – дискриминанта. Подсчитаем дискриминант по известной формуле b*b-4*a*c (12). Далее проверяем

условие (d<0) в строке 17, если оно выполнено, то корнями уравнения являются комплексные числа (13, 14), иначе (если d>=0) проверим еще одно условие (a=0) (16). Если оно выполнено то корней нет (17). Далее проверим еще вложенное условие (d=0), если оно выполнено то корни x1 = x2 = –b/2a, иначе проверяем условие (d>0). В случае если последнее условие выполнено то находим корни уравнения по формулам (24, 25).

В примере мы встретили новую управляющую конструкцию (условный оператор, строки 13-28), if(условие) {операторы1} else {операторы2}. Более подробно мы его рассмотрим в следующих разделах. Для понимания примера необходимо знать, что если (условие) истинно (13), то выполняются группа операторов (14), иначе операторы (16-28).

2.8. Сложные типы данных и строки

2.8.1. Массивы

Массив это упорядоченный набор однородных переменных (поименованных ячеек памяти), доступ к которым осуществляется по индексу элемента.

Пример. Все элементы массива пронумерованы от 0. Если массив имеет имя nmass1, тогда для обращение к i-ому элементу массива необходимо использовать запись nmass1[i] (имя массива с номером (индексом) i в квадратных скобках).

Пример.

byte[] mas1;

// массив mas1 байтовый

int[] mas2;

// массив

mas2

целых

double[][] mas3;

//

двумерный массив mas3 типа double

Point[] mas4;

//

массив

mas4

объектов Point

Массивы могут принимать как простые значения примитивных

типов, так и сложные значения: объекты, другие массивы. Массивы относят к сложным, ссылочным типам данных.

Создание массивов

В отличии от создания объектов других типов, для массивов нет необходимости в задании отдельного класса или специального имени для объектного типа. Для объявления массива используется только имя базового типа и квадратные скобки:

byte[] byte_array;

Таким образом, создается переменная byte_array типа массив с заранее неизвестным количеством ячеек. Для того чтобы создать объект типа массив нужно использовать зарезервированное слово new и в квадратных скобках указать размер массива.

byte_array = new byte[100];

Операции объявления переменной и создание объекта типа массив можно объединить в одну операцию:

byte[] byte_array = new byte[100];

В Java массивы описанные таким образом, автоматически инициализируются значениями по умолчанию. В случае, если базовым типом массива является примитивный тип, то все элементы заполняются нулями, если логический, то значениями false, если объектный (ссылочный), то пустыми ссылками null.

Индексы элементов массива начинаются с 0, что часто является причиной ошибочной организации циклов. Длина каждого массива хранится в поле length, которое может быть вызвано непосредственно для любого массива:

byte_array.length;

Пример. Вывести на консоль кубы целых чисел от 0 до 100. Создайте новый класс с именем Cubes и введите предложенный ниже код:

public class Cubes {

public static void main(String[] args) { long[] a = new long[100];

for (int i = 0; i<a.length; i++){ a[i]=i*i*i; System.out.print(a[i]+" ");

}

}

}

На консоль будет выведено 100 кубов чисел в диапазоне от 0 до

100.

Применение массивов

Ссылка на элемент массива имя_массива[i], как мы рассматривали ранее, применяется для доступа к элементу массива. Часто начинающие в своих программах делают попытку обратиться к элементу, номер которого выходит за границы представленные в описании. Java не позволит этого и генерирует ошибку. Всякий раз, когда вы получаете доступ к элементу массива, Java автоматически проверяет допустимость использованного вами индекса.

Значения индексов массивов в Java представлены данными целого типа. Нельзя использовать в качестве индекса значения типа boolean, переменные вещественного типа, объекты, другие массивы.

Если вы имеете массив (переменную типа массив), и он инициализирован, тогда можно сопоставить этой переменной другой массив, при этом старый массив будет окончательно утерян. Например:

a = new int[17];

В данном случае в памяти выделится новая свободная область под массив из 17 элементов и переменной a будет сопоставлен этот массив. Переменная a будет иметь ссылку на первый элемент нового массива, а старый массив, состоящий из ста элементов типа Long, станет мусором. «Сборщик мусора» в процессе выполнения программы старается удалять не используемые данные.

Переменные типа массив можно присваивать друг другу, но при этом следует помнить, что происходит всего лишь присваивание адреса нулевой ячейке, а не элементов массива.

Например, создадим новую переменную b типа массив:

int[] b;

Пока она просто создана и ни на какой массив не имеет ссылки

Рис. 18 Ссылки переменных типа массив до операции присваивания

Операция

b=a; Присвоит переменной b адрес массива, на который ссылается переменная a.

Рис. 19. Ссылки переменных типа массив после операции присваивания

Таким образом, переменная b содержит тот же адрес массива, что и переменная a.

Многомерные массивы

Многомерные массивы в Java являются простыми массивами, элементы которых так же являются массивами. Задаются многомерные массивы с помощью указания необходимого количества открывающей и закрывающей квадратных скобок:

int[][] matrix = new int[5][8];

В данном примере создается двумерный массив (матрица), состоящий из пяти «строк» и восьми «столбцов». То есть создается массив из пяти элементов, и каждый из этих элементов является массивом, содержащим по восемь элементов, таким образом получается «матрица». Обращение к элементам осуществляется с помощью уже двух индексов.

Для примера выведем на консоль матрицу 10х10 случайных чисел от 0 до 1000.

Создайте новый класс Matrix и введите предложенный в листинге

код:

public class Matrix {

public static void main(String[] args) { int[][] matrix = new int[10][10];

for (int i=0; i<10; i++){ for (int j=0; j<10; j++){

matrix[i][j]=(int)(1000*Math.random()); System.out.print(matrix[i][j]+" ");

}; System.out.println("");

};

}

}

После запуска на консоль будет выведено 100 случайных чисел в виде матрицы 10х10.

Соседние файлы в папке java