Macierz dwuwymiarowa w Java

0

Jestem początkująca, wielu rzeczy jeszcze nie rozumiem. Proszę o wyrozumiałość :)
Mam takie zadanie
screenshot-20210504194935.png
Nie zrobiłam wszystkich poleceń, nie za bardzo wiem jak się za to zabrać. Ale mam (tak myślę) najważniejszą część - menu i prosty program, obliczający dodawanie i mnożenie macierzy. Tylko nie wiem, czy taki sposób jaki obrałam jest zgodny z poleceniem, czy składniki ma podać user.
Proszę o pomoc

import java.util.Arrays;
import java.util.Scanner;

public class Matrix {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        int n[][] = { { 5, 6, 7 }, { 8, 9, 10 }, { 3, 1, 2 } };
        int m[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

        int c[][] = new int[3][3];

        System.out.println("N = " + Arrays.deepToString(n));
        System.out.println("M = " + Arrays.deepToString(m));

        int choice;

        do {
            System.out.println("\nWybierz operacje");
            System.out.println("----------------------------");
            System.out.println("1. Dodawanie");
            System.out.println("2. Mnozenie");
            System.out.println("3. Wyjscie");
            System.out.println("----------------------------");
            System.out.print("Wybor: ");
            choice = scan.nextInt();

            switch (choice) {
                case 1:
                    c = add(n, m);
                    System.out.println("A+B ");
                    System.out.println(Arrays.deepToString(c));
                    break;
                case 2:
                    c = multiply(n, m);
                    System.out.println("A*B ");
                    System.out.println(Arrays.deepToString(c));
                    break;
                case 3:
                    System.out.println("Wyjscie");
                    return;
                default:
                    System.out.println("Nieprawidlowe dane.");
                    System.out.println("Wprowadz poprawne dane");
            }
        } while (true);
    }

    public static int[][] add(int[][] n, int[][] m) {

        int row = n.length;
        int col = m[0].length;

        int sum[][] = new int[row][col];

        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                sum[i][j] = n[i][j] + m[i][j];
            }
        }

        return sum;
    }

    public static int[][] multiply(int[][] n, int[][] m) {

        int row = n.length;
        int col = m[0].length;

        int product[][] = new int[row][col];


        for (int i = 0; i < row; i++) {

            for (int j = 0; j < col; j++) {
                product[i][j] = 0;

                for (int k = 0; k < n[0].length; k++) {
                    product[i][j] += n[i][k] * m[k][j];
                }
            }
        }
        return product;
    }
        }

0

Jeżeli w poleceniu jest "wczytaj macierz A", to chyba user ma ją podać; problem jest większy, musisz to przepisać, ma być klasa Matrix i metody, add, mul, mają zwracać obiekt tego typu, [Matrix], a nie, jak u Ciebie, tablicę dwuwymiarową. Zaimplementuj te wyjątki, będziesz mogła testować na bieżąco...

2

@ania_ a:

Zanim zaczniesz programować ficzery i bajery, zrób sobie minimalny rozdział na:

  • klasy wyjątków
  • klasę Matrix z polem zainicjalizowanym tablicą 2D zer + te pierwsze 3 wymagania
  • klasę z której bedziesz sterowac* operacjami na obiektach typu Matrix (ew. później do rozdziału na jakieś klasy odpowiedzialne za czytanie z pliku, formatery wydruku, etc. etc.) - na razie tu sobie przechowuj dane tych macierzy do mnożenia i dodawania

Dodawania i mnożenie, oraz iteratory bedą się opierać na poprawnym zaimplementowaniu powyższego, musisz to mieć zrobione dobrze.

*) włącznie z modyfikacją zainicjalizowanych zerami elementów macierzy

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.