Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.171] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Подскажите как исправить код по шаблонному классу? Также прошу подсказать где взять очень хороший пример для разбора данной задачи. Спасибо. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Введите количество строк матрицы: "); int row = scanner.nextInt(); scanner.nextLine(); System.out.println("Введите количество столбцов матрицы: "); int col = scanner.nextInt(); scanner.nextLine(); // создаем экземпляр шаблонного класса Matrix Matrix<String> matrixNew = new Matrix<>(row, col); matrixNew.fillFromKeyword(scanner); scanner.nextLine(); // читает до конца текущей строки matrixNew.setRandom(); scanner.nextLine(); matrixNew.arithmeticOperations(); scanner.nextLine(); matrixNew.getMaxMin(); scanner.nextLine(); matrixNew.avg(); scanner.nextLine(); matrixNew.display(); scanner.nextLine(); scanner.close(); } } Java import java.util.Scanner; import java.util.Arrays; /** * Шаблонный класс для представления матрицы. * @param <T> указываем тип элементов матрицы */ public class Matrix<T> { /** * Поле класса типа T. Массив. */ private T[][] matrix; /** * Поле класса. Строки. */ private int row; /** * Поле класса. Столбцы. */ private int col; /** * Конструктор класса Matrix. * Через этот конструктор получаем доступ к полям класса. * @param row строки. * @param col столбцы. */ public Matrix(int row, int col) { this.row = row; this.col = col; this.matrix = (T[][]) new Object[row][col]; } /** * Метод для заполнения матрицы значениями, введенными с клавиатуры. * @param scanner сканнер для считывания данных с клавиатуры. */ public void fillFromKeyword(Scanner scanner) { System.out.println("Введите элементы матрицы: "); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { System.out.printf("Элемент [%d] [%d]: ", i, j); if (scanner.hasNext()) { matrix[i][j] = (T) scanner.next(); } } } } /** * Метод для заполнения матрицы случайными значениями. * где i и j - индексы элементов массива. */ public void setRandom() { int[][] matrix = new int[3][3]; for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { // [i] ставить не нужно matrix[i][j] = (int) (Math.random() * 10); } } System.out.println("Матрица" + Arrays.deepToString(matrix)); } /** * Метод по арифм. операциям: +, -, *, / по правилам работы с матрицами. */ public void arithmeticOperations(){ Scanner input = new Scanner(System.in); // создаем объект класса Scanner System.out.print("Введите арифметическую операцию: "); String operation = input.nextLine(); input.close(); int[][] matrix = new int[][]{{1, 3, -2}, {0, 5, 7}}; int n = 2; if (operation.equals("+")) { for(int i = 0; i < matrix.length; i++){ for(int j = 0; j < matrix[0].length; j++){ matrix[i][j] = matrix[i][j] + n; } } System.out.print("Результат: элементы матрицы + число N:\n" + Arrays.deepToString(matrix)); } if (operation.equals("-")) { for(int i = 0; i < matrix.length; i++){ for(int j = 0; j < matrix[0].length; j++){ matrix[i][j] = matrix[i][j] - n; } } System.out.print("Результат: элементы матрицы - число N:\n" + Arrays.deepToString(matrix)); } if (operation.equals("*")) { for(int i = 0; i < matrix.length; i++){ for(int j = 0; j < matrix[0].length; j++){ matrix[i][j] = matrix[i][j] * n; } } System.out.print("Результат: элементы матрицы * число N:\n" + Arrays.deepToString(matrix)); } if (operation.equals("/")) { for(int i = 0; i < matrix.length; i++){ for(int j = 0; j < matrix[0].length; j++){ matrix[i][j] = matrix[i][j] / n; } } System.out.print("Результат, остаток не указывается: элементы матрицы / число N:\n" + Arrays.deepToString(matrix)); } } } /** * Метод по поиску максимального и минимального элемента */ public void getMaxMin() { int[][] matrix = {{-1, -23, 0, 85}, {1, 8, -30, 15}}; int min = 0; int max = 0; for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { if (min > matrix[i][j]) { min = matrix[i][j]; } if (max < matrix[i][j]) { max = matrix[i][j]; } } } System.out.println("Массив: "); System.out.println("Максимальный: " + max); System.out.println("Минимальный: " + min); } /** * Метод по подсчету среднеарифметического значения */ public void avg() { int[][] matrix = new int[row][col]; for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { matrix[i][j] = (int) (Math.random() * 10); } } double sum = 0; double average = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { System.out.printf("%3d ", matrix[i][j]); sum += matrix[i][j]; } System.out.println(); } average = sum / (row * col); System.out.println("Сумма всех элементов = " + sum); System.out.println("Среднеарифметическое = " + average); } /** * Метод для отображения матрицы. */ public void display() { System.out.println("Матрица: "); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { System.out.print(matrix[i][j] + "\t"); } System.out.println(); } } } |