Witam, mam do wykonania poniższe zadanie:
Napisać program (składający się z kilku metod), który:
a) generuje 2-wym. tablicę liczb rzeczywistych i wyświetla ją w sposób sformatowany wierszami na ekran,
Odpowiednie dane (wymiary tablicy, zakres liczb) czyta z klawiatury
b) zapisuje tablicę do pliku tekstowego wg schematu:
-- wiersz 1: tekst "Macierz"
-- wiersz 2: liczba wierszy
-- wiersz 3: liczba kolumn
-- dalsze wiersze: kolejne wiersze tablicy w postaci sformatowanej
c) odczytuje macierz zapisaną w powyższym formacie z pliku do tablicy typu double w pamięci,
d) oblicza i wyświetla wartość średnią wyrazów macierzy.
Uwaga:
Nie należy korzystać ze scannera w przypadku operacji na plikach.
Nie należy w jakikolwiek wiązać programu odczytu z pliku z macierzą wcześniej wygenerowaną.
Mam problem z odczytem danych i zapisem ich tablicy ponownie, bardzo proszę o pomoc. Załączam pierwszą część mojego kodu (działa poprawnie).
import java.util.Scanner;
import java.util.Random;
import java.io.*;
public class Macierz2D {
private double [][] macierz;
private int n,m;
public Macierz2D () {
Scanner konstruktor = new Scanner (System.in);
System.out.println("Podaj liczbę wierszy.");
n=konstruktor.nextInt();
System.out.println("Podaj liczbę kolumn.");
m=konstruktor.nextInt();
macierz = new double [n][m];
}
public void wypelnij() {
double max;
double min;
Scanner w = new Scanner(System.in);
System.out.println("Podaj zakres liczb w macierzy.");
min=w.nextDouble();
max=w.nextDouble();
Random rand = new Random();
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
macierz[i][j]=min+(max-min)*rand.nextDouble();
}
}
}
public void wyswietl() {
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
System.out.printf("%.2f \t", macierz[i][j]);
} System.out.println();
} System.out.println();
}
public boolean zapisz() {
try {
PrintWriter zapis = new PrintWriter("macierz.txt");
zapis.println("Macierz");
zapis.println(n);
zapis.println(m);
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
zapis.printf("%.2f \t", macierz[i][j]);
} zapis.println();
}
zapis.close();
} catch (Exception ex) {
return false;
}
return true;
}
}