| 1.Определение массива |
| Масиви-це структури даних, які визначатимуться програмістом самостійно і служать для зберігання великої кількості змінних з однаковим типом даних. Давайте уявимо, що нам необхідно зберегти 100 значень, для чого в звичайних умовах необхідно 100 змінних. Явне декларування 100 змінних є тяжким і непотрібним заняттям: |
int i1;
int i2;
...
| для цього простіше створити масив
int [ ] a;
a=new int[100];
або простіше
int [ ] a=new int[100];
В мові Java є засіб для одночасного створення масиву і його ініціалізації. Ось приклад такої синтаксичної конструкції:
int[] smallPrimes= { 2, 3, 5, 7, 11, 13}; Відзначимо, що в цьому випадку не потрібно застосовувати оператор new. Крім того, можна навіть ініціалізувати безіменний масив: new int[ ] { 16, 19, 23 , 29 , 31, 37} Розглянемо прикладimport java.util.*; public class masiv { public static void main(String[] args) { int n=20; //вводимо змінну в якій будемо зберігати кількість елементів масиву int [] a=new int[n+1]; //створює масив, який містить 21 елемент з номерами 0, 1, 2, 3, ..., 20 //оскільки елементи масиву- цілі, то при створенні вони рівні нулю. //заповнюємо 10 чисел масиву випадковими числами for (int i=0 ; i<=n;i++){ a[i]=1+(int)(Math.random()*5); //заповнюємо масив випадковими числами від 1 до 5 } //виводить елементи масиву разом з номерами в стовпчик for (int i=0 ; i<=n;i++){ System.out.println(i+" "+a[i]+" "); } //виводить елементи масиву в рядочок for (int i=0 ; i<=n;i++){ System.out.print(a[i]+" "); } } } С помощью массива мы можем определить большое число переменных данного типа в одной строке, например: |
1. Начнем новую программу AvergeNumber.java и создадим ее каркас:
//Вычисление среднего значения
imoprt java.lang.*;
imoprt java.io.*;
public class AvergeNumber
{
public static void main (String [] args) throws IOException}
{
}
Далее декларируем массив для типа данных double.
2.Определим для массива имя и тип данных:
//Вычисление среднего значенияimoprt java.lang.*;imoprt java.io.*;public class AvergeNumber{public static void main (String [] args) throws IOException{double [] measurements;
}}
Декларация массива заключается в указании типа данных, за которым следуют скобки [], а затем имя массива. Квадратные скобки сообщают компилятору, что декларируется не единственная переменная типа double, а массив таких переменных.
Однако на этапе декларирования массива не выделяется необходимая оперативная память (в отличие от декларирования обычной переменной), в связи с этим массив еще не “приведен в рабочее состояние”.
3.Выделим для массива необходимый объем оперативной памяти:
//Вычисление среднего значенияimoprt java.lang.*;imoprt java.io.*;public class AvergeNumber{public static void main (String [] args) throws IOException{double [] measurements;measurements = new double [10]; }}
Число элементов массива указывается компилятору с помощью присваивания имени массива следующего выражения:
new DataType [Number];
В приведенном выше примере мы определили массив из 10 чисел с типом double. Ключевое слово new обозначает специальный оператор, с которым мы еще столкнемся при рассмотрении создания экземпляров классов.
| 2.Обрашение к отдельным элементам массива |
| Элементы массива располагаются в оперативной памяти последовательно, образуя один блок данных. Это позволяет программисту обращаться к отдельному элементу массива с помощью его последовательного номера в массиве, который указываеться в качестве индекса в квадратных скобах после имени массива. Необходимо лишь помнить, что нумерация элементов массива начинается с нуля, то есть первый элемент массива имеет индекс 0. |
1.Считаем данные с клавиатуры:
//Вычисление среднего значенияimoprt java.lang.*;imoprt java.io.*;public class AvergeNumber{public static void main (String [] args) throws IOException{double [] measurements;measurements = new double [10];BufferedReader bReader = new BufferedReader (new InputStream(System.in));
String inputStr;
int temp;
System.out.print("Введите элементы массива");
inputStr = bReader.readLine ();
temp = integer.parseInt(inputStr);
}}
2.Присвойм считаное с клавиатуры значение первому элементу массива:
//Вычисление среднего значенияimoprt java.lang.*;imoprt java.io.*;public class AvergeNumber{public static void main (String [] args) throws IOException{double [] measurements;measurements = new double [10];BufferedReader bReader = new BufferedReader (new InputStream(System.in));String inputStr;int temp;System.out.print("Введите элементы массива");inputStr = bReader.readLine ();temp = integer.parseInt(inputStr);
measurement [0] = temp;
}}
Доступ к отдельному элементу массива выглядит подобно декларированию массива, но теперь квадратные скобки после имени остаются не пустыми, а в них указывается индекс элемента , к которому необходимо получить доступ.
| 3.Обрашение к отдельным элементам массива в цикле. |
| Циклы очень удобны для поиска и обработки элементов массивов произвольной величины, при этом переменная цикла часто используется в качестве индекса для доступа к отдельным элементам массива. В данном случае мы используем цикл для инициализации значений массива. |
1.Добавим оператор цикла for, который имеет значения переменной цикла от 0 до 9:
//Вычисление среднего значенияimoprt java.lang.*;imoprt java.io.*;public class AvergeNumber{public static void main (String [] args) throws IOException{double [] measurements;measurements = new double [10];BufferedReader bReader = new BufferedReader (new InputStream(System.in));String inputStr;int temp, loop;
System.out.print("Введите элементы массива");inputStr = bReader.readLine ();temp = integer.parseInt(inputStr);measurement [0] = temp;for (loop=0; loop<=9; ++loop)
{
}}}
| Если количество элементов массива не известно, то следует использовать переменную Length int value = measurement.length |
//Вычисление среднего значения
imoprt java.lang.*;
imoprt java.io.*;
public class AvergeNumber
{
}
|
3.Последовательно присвоим введенные значения элементам массива:
//Вычисление среднего значения
imoprt java.lang.*;
imoprt java.io.*;
public class AvergeNumber
{
}
|
Так как в качестве индекса при обращении к отдельным элементам массива используется переменная цикла, то увеличение индекса и переход к следующему элементу массива осуществляется автоматически.
4.Добавим второй цикл,в котором вычисляется среднее значение для значений всех элементов массива:
//Вычисление среднего значения
imoprt java.lang.*;
imoprt java.io.*;
public class AvergeNumber
{
public static void main (String [] args) throws IOException}
{
double [] measurements;
measurements = new double [10];
BufferedReader bReader = new BufferedReader (new InputStream(System.in));
String inputStr;
int temp, loop;
for (loop=0; loop<=9; ++loop)double averageNumber = 0;
{
System.out.print("Введите элементы массива");
inputStr = bReader.readLine ();
temp = integer.parseInt(inputStr);
measurement [loop] = temp;
}
for (loop = 0; loop <= 9; ++loop)
{averageNumber = averageNumber/10.0;
averageNumber += measurements [loop];
}
System.out.println ("Average value = " + averageNumber);
}
Обхід матриці: обхід "змійкою"
За даним числом N потрібно заповнити квадратну матрицю розміром NxN цілими числами від 1 доN2; наступним чином:
- у лівому верхньому куті знаходиться число 1
- далі числа розміщуються "змійкою", тобто за зростанням зліва направо в непарних рядках, і зправа наліво — у парних.
Технічні умови
Вхідні дані
Вхідний файл містить ціле число N.
Вихідні дані
Вихідний файл повинен містити заповнену матрицю у вигляді N рядків по N цілих чисел у кожному.
1 ≤ N ≤ 100
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
PrintWriter out = new PrintWriter(System.out);
int n=in.nextInt();
int a[][]=new int[n+1][n+1];
int k=1;
for (int i=1; i<=n; i++ ){ // цикл по рядкам і -- номер рядка
if (i%2!=0)//для непарних
for (int j=1; j<=n; j++){// цикл ро стовпам j -- момер стовця
a[i][j]=k;
k++;
}
else // для парних рядків
for (int j=n; j>=1; j--){// цикл ро стовпам j -- момер стовця
a[i][j]=k;
k++;
}
}
for (int i=1; i<=n; i++ ){
for (int j=1; j<=n; j++){
if (j<n)out.print(a[i][j]+" ");
else out.print(a[i][j]);
}
out.println();
}
out.flush();
}
}
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
PrintWriter out = new PrintWriter(System.out);
int n=in.nextInt();
int a[][]=new int[n+1][n+1];
int k=1;
for (int i=1; i<=n; i++ ){ // цикл по рядкам і -- номер рядка
if (i%2!=0)//для непарних
for (int j=1; j<=n; j++){// цикл ро стовпам j -- момер стовця
a[i][j]=k;
k++;
}
else // для парних рядків
for (int j=n; j>=1; j--){// цикл ро стовпам j -- момер стовця
a[i][j]=k;
k++;
}
}
for (int i=1; i<=n; i++ ){
for (int j=1; j<=n; j++){
if (j<n)out.print(a[i][j]+" ");
else out.print(a[i][j]);
}
out.println();
}
out.flush();
}
}

Немає коментарів:
Дописати коментар