Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП(для очников).doc
Скачиваний:
36
Добавлен:
26.03.2016
Размер:
191.49 Кб
Скачать

Листинг.

Класс Main:

public class Main {

public static void main(String args[]) {

System.out.println("Задание: посчитать количество нулевых элементов матрицы");

Matrix m1 = new Matrix(3, 3);

//Создаём объект, экземпляр класса Matrix, назовем его m1. При создании используем конструктор Matrix(кол-во рядов,кол-во столбцов).

m1.rand(10);

//Вызываем метод для объекта m1 метод rand, заполняющий случайными значениями матрицу хранящуюся в этом объекте. (параметр этого метода указывает диапазон случайных чисел)

m1.print();

// Вызываем для объекта m1 метол print, для вывода на экран матрицы.

System.out.print("Количество нулевых элементов в этой матрице=");

System.out.println(m1.zeroCalc());

//Выводим на экран значение возвращаемое методом zeroCalc для объекта m1

}

}

Класс Matrix:

import java.util.Random;

public class Matrix {

//Описание класса для работы с матрицей

// Объявление внутренних полей объекта этого класса.

private int rows = 0; // Поле для хранения количества строк матрицы

private int cols = 0; // Поле для хранения количества рядов матрицы

private int[][] MatrixData = new int[rows][cols];

//Поле для хранения самой матрицы

// Объявление методов, определяющих поведение объектов-экземпляров этого класса

public Matrix() {

//Метод-конструтор (служит для инциализации при создании объекта)

// В этом методе в поле объекта хранящее матрицу записываются следующие значения:

this.MatrixData = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

}

public Matrix(int i, int j) {

// Это также метод-конструктор, отличающийся наличием параметров, с помощью которых

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

this.cols = j;

//берем параметр этого метода и записываем в поле col объекта для которого вызван этот метод

this.rows = i;

this.MatrixData = new int[this.cols][this.getRows()];

//устанавливаем размерность матрицы полученными значениями

for (int a = 0; a < this.rows; a++) {

for (int b = 0; b < this.cols; b++) {

this.setElement(a, b, 0); //С помощью метода SetElement(он описан ниже) задаем нулевые значения элементов этой матрицы

}

}

}

public Matrix(int[][] mat) {

// Еще один конструтор, позволяющий задавать значения матрицы, хранящейся в объекте

// Для этого, надо передать готовую матрицу в качесте параметра конструктору

MatrixData = mat;

}

public int[][] getMatrixData() {

// Этот метод возвращает матрицу хранящуюся в объекте этого класса

return MatrixData;

}

public int getRows() {

// Возвращает значение поля "количество рядов" объекта этого класса

return rows;

}

public int getCols() {

// Возвращает значение поля "количество столбцов" объекта этого класса

return cols;

}

public void setCols(int cols) {

// Позволяет устанавливать значение поля "количество столбцов"

this.cols = cols;

}

public void setRows(int rows) {

// Позволяет устанавливать значение поля "количество рядов"

this.rows = rows;

}

public int getElement(int i, int j) {

// Возвращает значение элемента расположенного в i-том ряду, j-том столбце

return this.MatrixData[i][j];

}

public void setElement(int i, int j, int val) {

//Записывает значение параметра val в i-тый,j-тый элемент матрицы

this.MatrixData[i][j] = val;

}

public void print() {

//Метод предназначен для вывода на экран матрицы объекта этого класса

for (int i = 0; i < this.rows; i++) {

for (int j = 0; j < this.cols; j++) {

System.out.print(this.getElement(i, j) + " ");

/*Выводим на экран элемент с индексами i и j

(получаем его с помощью метода этого класса getElement) */

}

System.out.println();

}

}

public int zeroCalc() {

//Метод возвращает количество нулевых элементов в матрице объекта этого класса

int zerocount = 0;

for (int i = 0; i < this.rows; i++) {

for (int j = 0; j < this.cols; j++) {

if (this.getElement(i, j) == 0) {

zerocount++;

}

}

}

return zerocount;

}

public void rand(int lim) {

//Метод заполняющий матрицу случайными значениями

Random rand = new Random();

// Создаём объект rand класса Random

for (int i = 0; i < this.rows; i++) {

for (int j = 0; j < this.cols; j++) {

this.setElement(i, j, rand.nextInt(lim));

// с помощью вызова метода nextInt объекта rand получаем случайное значение в диапазоне от 0 до значения параметра lim

}

}

}

}