Синтаксис Java. Массивы

 

Java. Массивы
Java. Массивы  

 

Решение домашнего задания из статьи Синтаксис Java. Циклы

 File,NewProject,Loop src,New,JavaClass,Loop

public class Loop {
public static void main(String[] args) {
for (int i = 100; i <= 1000; i++) {
if (i % 2 == 1 && i % 5 == 0) {
System.out.println(i);
}} }}

Run!

Массивы

Массивы - это группа однотипных переменных.

Если вспомнить пример про переменные, что переменная это своего рода коробочка, которая может хранить одно значение того типа для которого эта коробочка предназначена, то массив - это ящик для хранения таких коробочек строго определённого типа и размера.

Для того что бы создать массив используется следующая конструкция: сначала пишется тип[] имяМассива = new тип[размер массива];

Создадим массив который будет хранить количество дней в каждом месяце:

int[] daysinMonth = new int[12];

Если в массив хотим положить какое то значение. то нужно обратиться к ячейке данного массива по её индексу: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 

То есть январь [0], февраль [1], март [2] итд.

Для того что бы в ячейку для января положить значение 31 пишем:

daysinMonth[0] = 31;

IDE: Newproject FirstArray,Create New Class FirsArray

public class FirstArray {
public static void main(String[] args) {
int [] daysInMonth = new int[12];
}
}

Индексация с [0] 

public class FirstArray {
public static void main(String[] args) {
int [] daysInMonth = new int[12];
daysInMonth [0] = 31;
daysInMonth [1] = 28;
daysInMonth [2] = 31;
daysInMonth [3] = 30;
daysInMonth [4] = 31;
daysInMonth [5] = 30;
daysInMonth [6] = 31;
daysInMonth [7] = 31;
daysInMonth [8] = 30;
daysInMonth [9] = 31;
daysInMonth [10] = 30;
daysInMonth [11] = 31;
}
}

в конце последнего элемента будет индекс - длинна массива -1

Для того что бы вывести какое ни будь значение, используется тот же синтаксис. Выведем кол-во дней в марте.

public class FirstArray {
public static void main(String[] args) {
int [] daysInMonth = new int[12];
daysInMonth [0] = 31;
daysInMonth [1] = 28;
daysInMonth [2] = 31;
daysInMonth [3] = 30;
daysInMonth [4] = 31;
daysInMonth [5] = 30;
daysInMonth [6] = 31;
daysInMonth [7] = 31;
daysInMonth [8] = 30;
daysInMonth [9] = 31;
daysInMonth [10] = 30;
daysInMonth [11] = 31;
int march = daysInMonth [2];
System.out.println(march);
}
}

Run! 31

 Выведем все числа в цикле!

public class FirstArray {
public static void main(String[] args) {
int [] daysInMonth = new int[12];
daysInMonth [0] = 31;
daysInMonth [1] = 28;
daysInMonth [2] = 31;
daysInMonth [3] = 30;
daysInMonth [4] = 31;
daysInMonth [5] = 30;
daysInMonth [6] = 31;
daysInMonth [7] = 31;
daysInMonth [8] = 30;
daysInMonth [9] = 31;
daysInMonth [10] = 30;
daysInMonth [11] = 31;
for (int i = 0; i < 12; i++) {
System.out.println(daysInMonth[i]);
}
}
}

Run! Все значения вывелись.

Исправим, поставим  <=

public class FirstArray {
public static void main(String[] args) {
int [] daysInMonth = new int[12];
daysInMonth [0] = 31;
daysInMonth [1] = 28;
daysInMonth [2] = 31;
daysInMonth [3] = 30;
daysInMonth [4] = 31;
daysInMonth [5] = 30;
daysInMonth [6] = 31;
daysInMonth [7] = 31;
daysInMonth [8] = 30;
daysInMonth [9] = 31;
daysInMonth [10] = 30;
daysInMonth [11] = 31;
for (int i = 0; i <= 12; i++) {
System.out.println(daysInMonth[i]);
}
}
}

Run! Error

ArrayIndexOutOfBoundsException: - выход за пределы массива Index 12, общая длинна length 12

Но если общая 12, то последний будет 11.  Что бы этого избежать, лучше не указывать конкретное значение, как мы и сделали, вместо этого можно получить св-во массива, которое показывает, сколько в нём элементов.

public class FirstArray {
public static void main(String[] args) {
int [] daysInMonth = new int[12];
daysInMonth [0] = 31;
daysInMonth [1] = 28;
daysInMonth [2] = 31;
daysInMonth [3] = 30;
daysInMonth [4] = 31;
daysInMonth [5] = 30;
daysInMonth [6] = 31;
daysInMonth [7] = 31;
daysInMonth [8] = 30;
daysInMonth [9] = 31;
daysInMonth [10] = 30;
daysInMonth [11] = 31;
for (int i = 0; i < daysInMonth.length; i++) {
System.out.println(daysInMonth[i]);
}
}
}

Run!

Скачать курсы бесплатно

Если добавить ещё один элемент, а массив будет состоять из 12 чисел и не нужно переделывать цикл, так как в нём используется длинна массива.

public class FirstArray {
public static void main(String[] args) {
int [] daysInMonth = new int[13];
daysInMonth [0] = 31;
daysInMonth [1] = 28;
daysInMonth [2] = 31;
daysInMonth [3] = 30;
daysInMonth [4] = 31;
daysInMonth [5] = 30;
daysInMonth [6] = 31;
daysInMonth [7] = 31;
daysInMonth [8] = 30;
daysInMonth [9] = 31;
daysInMonth [10] = 30;
daysInMonth [11] = 31;
daysInMonth [12] = 31;
for (int i =0; i < daysInMonth.length; i++) {
System.out.println(daysInMonth[i]);
}
}
}
Run!

Если забудем присвоить значение элементам массива.

public class FirstArray {
public static void main(String[] args) {
int [] daysInMonth = new int[13];

for (int i =0; i < daysInMonth.length; i++) {
System.out.println(daysInMonth[i]);
}
}
}
Run!  Ошибки нет! По умолчанию 0.
Потому что при инициализации массива, ключевого слова new, элементам массива сразу присваиваются значения по умолчанию. Если массив чисел, то всем элементам присвоятся 0.
Если массив типа boolen, то все элементы будут типа folse, если ссылочного типа то nole  или пустое значение.

Создадим новый массив из 100 чисел.
public class FirstArray {
public static void main(String[] args) {
int[] nums = new int [100];
for (int i = 0; i < nums.length; i++) {
nums[i] = i * 10;
}
for (int i =0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
}
Run! до 990

В статье про циклы говорили что ещё существует четвёртый тип цикла, специальный тип цикла форма for, который называется for each

for each (для каждого)
В данном цикле нельзя изменять массив, т.е присваивать новые значения его элементам
Рассмотрим его, так как он используется при работе с массивами!
Так же используется только в том случае, если не хотим изменять массив, то есть присваивать ему значение.
public class FirstArray {
public static void main(String[] args) {
int[] nums = new int [100];
for (int i = 0; i < nums.length; i++) {
nums[i] = i * 10;
}
for (int i : nums) {
System.out.println(i);
}
}
}
Run! Результат тот же.

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

public class FirstArray {
public static void main(String[] args) {
int[] nums = new int[100];
for (int i = 0; i < nums.length; i++) {
nums[i] = i * 10;
}
for (int i : nums) {
System.out.println(i);
}
char[] chars = new char[10];
for (char ch : chars) {
System.out.println(ch);
}
}
}
Run! ничего не выводится, так как использовали пустое значение.

Задача!

Создать массив чисел, и проинициализировать его значениями от 100 до 1000.
Создать второй массив по длине равный первому (использовать свойство length).  Проинициализировать его значениям, взятыми из первого массива, но в обратном порядке.
В цикле for each вывести все элементы второго массива.

Подсказка! 
Что бы обращаться к элементам массива с конца, в цикл for можно добавить ещё одну переменную которой изначально присвоить значение последнего индекса, а потом с каждым шагом уменьшать её значение. Для этого через запятую необходимо указывать необходимые переменные.

Примерно так: for (int i = 0, j =1000; i < 1000; i++, j--) {

public class FirstArray {
public static void main(String[] args) {
int[] first = new int[900];
for (int i = 0; i < first.length; i++) {
first[i] = i + 100;
}
int[] second = new int[first.length];
for (int i = 0, j = first.length -1; i < first.length; i++, j--){
second[j] = first[i];
}
for (int i : second) {
System.out.println(i);
}
}
}

Run!


Отправить комментарий

Новые Старые
FL.ru – фриланс сайт удаленной работы. Поиск удаленной работы, фрилансеры.